Lire premiere caratere d'une chaine de caractere

Résolu
lassad_haddaji Messages postés 141 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 6 avril 2012 - 21 févr. 2010 à 14:40
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 21 févr. 2010 à 22:50
bonjour,
si possible de m'aider, je veux lire le premier caractère d'une chaine j'ai essayé avec substring mais j'ai pas trouvé truc

exemple :
bonjour---->bon

bonjour tous--->bt

merci :)

14 réponses

Profil bloqué
21 févr. 2010 à 15:28
Salut

.Substring

Extrait une partie d'une chaîne.

Le premier paramètre indique la position de départ; le second, le nombre de caractères à extraire.


Dim a As String= "Informatique"

MessageBox.show(a.Substring(2,3)) 'Affiche for

Le premier paramètre indique la position du caractère où doit commencer la sous-chaîne, en commençant à la position 0. (les caractères sont comptés 0, 1, 2, 3....

Le second paramètre la longueur de la sous-chaîne.

Exercice 1: comment obtenir les 4 caractères de droite:


Dim a As String= "Informatique"

MessageBox.show(a.Substring(A.Length-4)) 'Affiche ique

Ici on omet le second paramètre,la longueur de la sous-chaîne, va jusqu'a la fin de la chaîne.

Exercice 2: comment obtenir les 3 caractères de gauche:


Dim a As String= "Informatique"

MessageBox.show(a.Substring(0, 3)) 'Affiche inf


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
3
Profil bloqué
21 févr. 2010 à 16:25
Salut

Soit la chaine GRENIER Alain

 
        Dim i As Long
        Dim chn As String = "GRENIER Alain"
        chn = chn.Trim ' enlève les espaces au début et à la fin
        Dim resultat As String = String.Empty ' chaine vide
        resultat = chn.Substring(0, 1)
        For i = 1 To chn.Length - 1
            If chn.Substring(i, 1) " " Then resultat resultat + chn.Substring(i + 1, 1)
        Next i
        Label1.Text = resultat


Attention si la chaine est "GRENIER Alain" cela ne fonctionnera pas car il y a 2 espaces entre les 2 mots
Par contre la chaine peut plus que 2 mots : à chaque fois la première lettre du mot est extraite

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
3
Profil bloqué
21 févr. 2010 à 17:30
Attention le code précédent est faux : mille excuses
il ne gère pas les espaces multiples
voici le code corrigé


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
        Dim i As Long
        Dim chn As String = TextBox1.Text.ToString
        chn = chn.Trim ' enlève les espaces au début et à la fin
        Dim resultat As String = chn.Substring(0, 1)  ' première lettre du premier mot
        For i = 1 To chn.Length - 2 ' on cherche les espaces
           ' si le caractère courant est un espace et que le caractère suivant n'est pas un espace
           ' on ajoute la première lettre de ce mot  
           If chn.Substring(i, 1) " " and chn.Substring(i+1,1) <> " " Then resultat resultat + chn.Substring(i + 1, 1)
        Next i
        Label1.Text = resultat
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
21 févr. 2010 à 16:21
Salut,

Dim str as string = "bonjour tous"
if (str.Contains(" ")) then
dim tab as string() = .Split(" ")
dim result as List(of String)= new List(Of String) 
foreach t as string in tab
    result = a.Add(t(0))
next
return result.Join("")
else
' substring()
end if



(Code non testé) Ca donne une idée.
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lassad_haddaji Messages postés 141 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 6 avril 2012
21 févr. 2010 à 15:46
merci, c'est bien fonctionner seulement me reste quand il y a dans une chaine un espace comme bonjour tous
il dois me retourner bt
exemple:
GRENIER Alain ---return---> GA

merci en avance si tu me sors de ce petit problème
0
Profil bloqué
21 févr. 2010 à 16:30
Attention si la chaine est "GRENIER Alain" cela ne fonctionnera pas car il y a 2 espaces entre les 2 mots
Je n'avais mis qu'un espace : désolé

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
Profil bloqué
21 févr. 2010 à 16:33
Le site remplace mes 2 espaces par un seul dans la chaine "GRENIER Alain"
L'autre solution est valable aussi mais moins simple


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
Profil bloqué
21 févr. 2010 à 16:39
Salut nhervagault

J'ai essayé ton code pour voir et il y a plusieurs avertissements
il doit manquer des éléments ou des définitions de variables



La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
lassad_haddaji Messages postés 141 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 6 avril 2012
21 févr. 2010 à 16:40
cool, merci Galain et encore merci à nhervagault
juste une remarque pour nhervagault que ca fonction il y a une erreur .Split(" ") normalement on utilise with d'abord

merci
0
Profil bloqué
21 févr. 2010 à 16:41
Si cela te convient mets "Repose acceptée"
A+

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
Profil bloqué
21 févr. 2010 à 16:43
Faute de frappe : Réponse bien sur
Tu as été plus rapide que moi


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
lassad_haddaji Messages postés 141 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 6 avril 2012
21 févr. 2010 à 16:46
le script final je le met peut être un autre à besoin

        Dim i As Long
        Dim chn As String = TextBox1.Text.ToString
        If (chn.Contains(" ")) Then

            chn = chn.Trim ' enlève les espaces au début et à la fin
            Dim resultat As String = String.Empty ' chaine vide
            resultat = chn.Substring(0, 1)
            For i = 1 To chn.Length - 1
                If chn.Substring(i, 1) " " Then resultat resultat + chn.Substring(i + 1, 1)
            Next i
            Label1.Text = resultat
        Else
            Label1.Text = chn.Substring(0, 2)

        End If
0
Profil bloqué
21 févr. 2010 à 17:18
Certaines lignes de ton script sont inutiles
Ici le cas d'espaces multiples successifs est traité

Dim i As Long
        Dim chn As String = TextBox1.Text.ToString
        chn = chn.Trim ' enlève les espaces au début et à la fin
        Dim resultat As String = chn.Substring(0, 1)  ' première lettre du premier mot
        For i = 1 To chn.Length - 1 ' on cherche les espaces
           ' si le caractère courant est un espace et que le caractère précédent n'est pas un espace
           ' on ajoute la première lettre de ce mot  
           If chn.Substring(i, 1) " " and chn.Substring(i-1,1) <> " " Then resultat resultat + chn.Substring(i + 1, 1)
        Next i
        Label1.Text = resultat
        


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
21 févr. 2010 à 22:50
Ok j'avais mis

"bonjour à tous".Split(" ") 


Et apres j'ai refais le code avec une variable intermédiaire
sans changer la remettre dans mon code avant de poster.

Le but etait d'introduire
les tableaux de string et les split et les join
0
Rejoignez-nous