Détecteur de "/" et de caractère juste après

Vic - 8 août 2013 à 13:51
 Vic - 8 août 2013 à 18:54
Bonjour,
J'ai fait un programme avec une RichTextBox (qui fait office de console) et avec une TextBox qui permet d'entrer des commandes qui affichent le résultat dans la RichTextBox.

J'aimerai que la RichTextBox écrive "Commande incorrecte" si une commande ne commence pas par "/" et un caractère.

Je sait comment écrire "Commande incorrecte" et comment faire pour qu'il y ait / au début mais pas le caractère après.

Pourriez vous m'aider svp?

       If TextBox1.Text = "/" & [Ici le caractère] Then
            [Ma commande]
       Else
            RichTextBox1.AppendText(vbNewLine)
            RichTextBox1.SelectionColor = Color.Red
            RichTextBox1.AppendText("Commande incorrecte!")
            RichTextBox1.AppendText(vbNewLine)
            RichTextBox1.SelectionColor = Color.Green
            RichTextBox1.AppendText("Entrez une commande...")
            TextBox1.Clear()
    End If


Merci d'avance.

7 réponses

goth22 Messages postés 5 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 8 août 2013 1
8 août 2013 à 16:22
désolé,
erreur dans le regex
    Dim myregex As Regex = New Regex("^\/[a-zA-Z]+$")

-\/ = forcément un caractere /
- [a-zA-Z]+ puis n'importes quelles lettres ou ensemble de lettres
1
Merci c'est exactement ce que je voulais!
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
8 août 2013 à 14:03
Salut

J'aimerai que la RichTextBox écrive "Commande incorrecte" si une commande ne commence pas par "/" et un caractère.

et qu'est ce pour toi un caractère ?
un espace aussi est un caractère
0
Le caractère en question est une lettre a-z
0
goth22 Messages postés 5 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 8 août 2013 1
8 août 2013 à 14:20
Bonjour,

Il existe la fonction startwith dans vb.net qui vous permet de comparer le début de chaine.

        Dim st As String
        If st.StartsWith("/[caractere]") Then

les instructions....

        End If
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
8 août 2013 à 15:04
pas clair ce que tu demandes
d'abord un string est une chaine de caractères
tu veux verifier si ta chaine commence par le caractère /
st.StartsWith("/")
et ensuite tu dis
et comment faire pour qu'il y ait / au début mais pas le caractère après.
quel caractère ?
0

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

Posez votre question
Le truc de goth22 marche pas.
Je vais vous expliquer plus clairement:

Je veux que si on écrit "/" et un ou plusieurs caractères de a à z il se passe:
RichTextBox1.AppendText(vbNewLine)
RichTextBox1.SelectionColor = Color.MediumPurple
RichTextBox1.AppendText("[USER] " & TextBox1.Text)

Et il est possible que ça fasse quelque chose selon mais bon on s'en fout.
Et si il y a pas de "/" ou de caractère après ça maque:

RichTextBox1.AppendText(vbNewLine)
RichTextBox1.SelectionColor = Color.MediumPurple
RichTextBox1.AppendText("[USER] " & TextBox1.Text)

Donc le tout:
If TextBox1.Text = "/" & 'CARACTERE Then
            RichTextBox1.AppendText(vbNewLine)
            RichTextBox1.SelectionColor = Color.MediumPurple
            RichTextBox1.AppendText("[USER] " & TextBox1.Text)
        Else
            RichTextBox1.AppendText(vbNewLine)
            RichTextBox1.SelectionColor = Color.Red
            RichTextBox1.AppendText("Commande incorrecte!")
            RichTextBox1.AppendText(vbNewLine)
            RichTextBox1.SelectionColor = Color.Green
            RichTextBox1.AppendText("Entrez une commande...")
        End If

Pour préciser: RichTextBox = Console, TextBox1 = Endroit où on marque une commande, Button1 = Valider.
0
goth22 Messages postés 5 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 8 août 2013 1
8 août 2013 à 15:44
Si j'ai bien compris tu veux une validation de la chaîne en fonction d'un masque.
Pour faire ça tu as les expressions régulières (regex).
pas simple mais très puissant.
0
goth22 Messages postés 5 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 8 août 2013 1
8 août 2013 à 16:02
donc quelque chose comme ça :

Imports System.Text.RegularExpressions

soit dans la validation de ta textbox :
        Dim myregex As Regex = New Regex("^\\[a-zA-Z]+$")
        If myregex.IsMatch(TextBox1.Text) Then
            RichTextBox1.AppendText(vbNewLine)
            RichTextBox1.SelectionColor = Color.MediumPurple
            RichTextBox1.AppendText("[USER] " & TextBox1.Text)
        Else
            RichTextBox1.AppendText(vbNewLine)
            RichTextBox1.SelectionColor = Color.Red
            RichTextBox1.AppendText("Commande incorrecte!")
            RichTextBox1.AppendText(vbNewLine)
            RichTextBox1.SelectionColor = Color.Green
            RichTextBox1.AppendText("Entrez une commande...")
        End If
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
8 août 2013 à 16:01
peut etre ainsi
If str.StartsWith("/") AndAlso Char.IsLetter(Convert.ToChar(str.Substring(1, 1))) Then
            MessageBox.Show("ok")
        Else
            MessageBox.Show("not valid")
        End If

le A Z et a z sont valables
veux tu seulement que a z
0
Rejoignez-nous