Caractéres spéciaux

Résolu
galopeur Messages postés 4 Date d'inscription jeudi 23 janvier 2003 Statut Membre Dernière intervention 5 septembre 2005 - 5 sept. 2005 à 20:35
galopeur Messages postés 4 Date d'inscription jeudi 23 janvier 2003 Statut Membre Dernière intervention 5 septembre 2005 - 5 sept. 2005 à 22:46
Je voudrais dans une chaîne de caractéres remplacer les à, é, è,',ù, par des caractéres sans accents..

pour un caractére je sais readline.replace("à","a") mais pour tous les caractéres?
qui à une soluce??

4 réponses

Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
5 sept. 2005 à 22:04
Salut galopeur,

Bon allé, juste parce que j'avais envie de jouer un peu, voici une autre solution un poil plus légere en mémoire ....




Const accent As String = "àâäéêèëïîôöùüû"

Const noAccent As String = "aaaeeeeiioouuu"



Private Sub Command1_Click()

Dim demo$

demo = "L'été, je vais sur l'île où y'a la fête jusqu'à l'aube et" & _

" je cri : Yàâäéêèëïîôöùüû ... "

Debug.Print demo & vbCrLf & " => " & sansAccents(demo)

End Sub



Private Function sansAccents(ByVal s As String) As String

Dim max%, i%

max = Len(accent)



For i = 1 To max

s = Replace(s , Mid(accent, i, 1), Mid(noAccent, i, 1))

Next i



sansAccents = s

End Function



++

Zlub
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 sept. 2005 à 21:20
salut,
je craind que tu ne sois obligé de faire autant de ligne que de caractères
(ou dans un tableau, mais le principe est le même)

[VB6]

Option Explicit

Const NbCaracs As Integer = 4
Dim TabCaracs(NbCaracs - 1, 1) As String
'
'
Private Sub Form_Load()
'init le tableau
TabCaracs(0, 0) = "à"
TabCaracs(0, 1) = "a"

TabCaracs(1, 0) = "é"
TabCaracs(1, 1) = "e"

TabCaracs(2, 0) = "è"
TabCaracs(2, 1) = "e"

TabCaracs(3, 0) = "ù"
TabCaracs(3, 1) = "u"
'etc.....
End Sub
'
'
Private Sub Command1_Click()
Dim MaStringAccentuee As String

MaStringAccentuee = "une phrase avec accents où sans, é voilà"
MsgBox "AVANT : " & MaStringAccentuee, 32

MaStringAccentuee = SansAccent(MaStringAccentuee)
MsgBox "APRES : " & MaStringAccentuee, 32
End Sub
'
'
Private Function SansAccent(MaChaine As String) As String
Dim i As Integer
For i = 0 To NbCaracs - 1
MaChaine = Replace (MaChaine, TabCaracs(i, 0), TabCaracs(i, 1))
Next i

SansAccent = MaChaine
End Function

PCPT
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
5 sept. 2005 à 22:10
Dim Tabl1 As String

Dim Tabl2 As String



Private Sub Form_Load()

' Tables de conversion

Tabl1 = "àéèù"

Tabl2 = "aeeu"

End Sub



Private Function Convertir(ByVal s As String) As String

Dim i As Integer

Dim j As Integer

Dim x As Integer



' parcours de la chaîne caractère par caractère

For i = 1 To Len(s)

x = InStr(Tabl1, Mid$(s, i, 1))

' si caractère est dans tabl1 il est remplacé par son correspondant dans Tabl2

If x > 0 Then Mid$(s, i, 1) = Mid$(Tabl2, x, 1)

Next

Convertir = s



End Function



Private Sub Command1_Click()

' exemple

MsgBox Convertir("ààééèèùù")

End Sub




Daniel
0
galopeur Messages postés 4 Date d'inscription jeudi 23 janvier 2003 Statut Membre Dernière intervention 5 septembre 2005
5 sept. 2005 à 22:46
Jai fait çà , car avant tout le streamreader ne pouvait lire le code ascii de mon fichier

Dim sr
As StreamReader =
New StreamReader(source, System.Text.ASCIIEncoding.UTF7)



Do
While sr.Peek >= 0


s = sr.ReadLine()


s = s.Replace("à", "a")


s = s.Replace("é", "e")


s = s.Replace("ù", "u")


s = s.Replace("ë", "e")


s = s.Replace("%", " ")


s = s.Replace("è", "e")


s = s.Replace("@", "x")


s = s.Replace("â", "a")


s = s.Replace("ä", "a")


s = s.Replace("ê", "e")


s = s.Replace("ë", "e")


s = s.Replace("î", "i")


s = s.Replace("ï", "i")


s = s.Replace("ô", "o")


s = s.Replace("ö", "o")


s = s.Replace("ü", "u")


s = s.Replace("û", "u")

mais zlub ta methode est trés interessante...

je remercie PCPT et Daniel, mais je ne veux pas de tables.

merci à tous de votre aide..
0
Rejoignez-nous