Site:  Cours VB.net  
E 1.1 Exemples:Petites routines.

Les 'String'

 

On prendra des exemples de routine très simple ne contenant que du code.

 

Une string 'Nom' contient un nom , mettre si nécessaire la première lettre en majuscule.

1-En utilisant les Classes String et Char:

Dim Nom As String = "philippe"

' Si le premier caractère est minuscule

If Char.IsLower(Nom.Chars(0)) Then

' Le transformer en majuscule et afficher

MessageBox.Show(Char.ToUpper(Nom.Chars(0)) + Nom.Substring(1, Nom.Length - 1))

End If

On regarde si le premier caractère de la chaîne Nom.Chars(0) est minuscule (.IsLower).

Si oui on transforme ce premier caractère en majuscule (.ToUpper) et on ajoute la sous chaîne allant du second au dernier caractère.

2-En utilisant les instructions VB:

Dim Nom As String = "philippe"

Nom = UCase(Microsoft.VisualBasic.Left(Nom, 1)) & Mid(Nom, 2)

On prend le premier caractère de gauche : Left(Nom,1), on le transforme en majuscule (Ucase) , on ajoute la chaîne commençant par le second caractère et allant jusqu'à la fin.

 

Comment voir si  un caractère est une voyelle:

Dim Voy As String = "aeiouy"

Dim C As String = "p"

If Instr( Voy, C)<>0 then

..

End If

Ici on regarde si la String C est contenue dans la String Voy (qui contient toutes les voyelles), si cela retourne 0 c'est que la String C n'y est pas.

 

Comment éliminer une combinaison bien précise de caractères en début de chaîne:

Exemple: éliminer une balise html de type </b ../b0> et son contenu dans une chaîne nommée Ch:

' Le premier caractère est-il '<', recherche avec StartsWith (en plus on élimine les espaces avec Trim())
If Ch.Trim().StartsWith("<") Then

' Rechercher le caractère '>', le premier
Dim lastLocation As Integer = Ch.IndexOf(">")

If lastLocation >= 0 Then

' éliminer la chaîne entre '<' et '>'
    Ch = Ch.Substring((lastLocation + 1))
End If
End If
 

 

Vous avez une chaîne de caractères, comment afficher, le premier caractère puis les 2 premiers, puis 3..?

Dans un formulaire (une fenêtre), il y a un TextBox1( zone de texte avec sa propriété Multiline=True)

Dim C As String = "DUBONET"

Dim Tx As String

Dim i As Integer

For i = 1 To Microsoft.VisualBasic.Len(C)

    Tx += Microsoft.VisualBasic.Left(C, i) + ControlChars.CrLf

Next i

TextBox1.Text = Tx

Mettre ce code dans Form_Load puis lancer le programme.

Affiche:

D

DU

DUB

DUBO

DUBON

DUBONE

DUBONET

On remarque: Tx est une string permettant de stocker temporairement la string à afficher; a chaque boucle on ajoute la nouvelle string (Tx += est équivalent à Tx=Tx+..) et un caractère de retour à la ligne.

Left fait partie de l'espace de nom Microsoft.VisualBasic.

 

Vous avez deux chaînes de caractères, comment savoir si la second est un anagramme de la première?

Pour les nuls, un anagramme c'est les mêmes lettres dans un ordre différent.

Il faut mettre les 2 chaînes dans un tableau de caractères, trier les 2 tableaux, les remettre dans des strings et les comparer.

'créons 2 string

Dim maString1 As String = "stressed"

Dim maString2 As String = "desserts"

 

'On passe les strings dans des tableaux

Dim myChar1 As Char =mastring1.ToCharArray

Dim myChar2 As Char =mastring2.ToCharArray

 

'On trie les tableaux

Array.Sort( myChar1)

Array.Sort( myChar2)

'On passe les caractères dans des strings

Dim MyStringTrie1 As New String (myChar1)

Dim MyStringTrie2 As New String (myChar2)

'On compare les 2 Strings, si elle sont égales cela retourne 0, l'expressin 0=0 est True, on la mettre dans un Boolean

Dim anagramme As boolean =(String.Compare (MyStringTrie1 ,MyStringTrie2 )=0)

 

Compter  combien de fois un mot apparaît dans un texte?

Calculer le nombre d'occurrences ( compteur )d'une sous-chaîne (monMot) dans une String (monTexte).

'On rappelle que .IndexOf permet de chercher une sous-chaîne dans une chaîne (il retourne 0 si la chaîne n'est pas présente ou la position de la chaîne).

Dim monTexte As String ="jfkjf...."

Dim monMot As String= "lulu"

 

Dim compteur As Integer =-1

Dim index As Integer =-1

 

Do

  compteur+= 1

  index= monTexte.IndexOf (monMot, index +1)

Loop Until index <0

 

On initialise le compteur à -1 car la boucle Do Loop est systématiquement effectuée une fois et incrémente le compteur une fois de trop.

On initialise l'index à -1 car dans la boucle Do Loop on utilise Index+1; sinon, si la chaîne cherchée débute au 1er caractère elle n'est pas comptée.