none
Element von

    Frage

  • Servus leute,

    ich hab eine Frage und zwar wie kann ich bei Visual Basic eine If Operation schreiben die ungefähr das beinhaltet:

    if Eingabe is element von erlaubteZeichen

    Eingabe ist das was in die TextBox eingegeben wird und erlaubteZeichen ist meine Menge die ich im Voraus definiert habe mit Buchstaben von a-z, bzw. ich möchte prüfen ob die Eingabe nur aus erlaubtenZeichen besteht. Ich bedanke mich schon im Voraus für eure kompetente Hilfe. :D

    Donnerstag, 27. Dezember 2012 13:43

Antworten

  • Hallo, mir fällt da Regex ein:
    If Not Regex.Match(input, "^[a-zA-Z0-9]*$").Success Then
    	MessageBox("Falsche Eingabe")
    End If
    In den eckigen Klammern kannst du alle Zeichen eingeben die du erlauben willst. Bereiche für Buchstaben und Zahlen werden mit einem bindestrich (-) angegeben. Sonderzeichen wie .\/-+* usw. müssen ein Backslash (\) davor stehen haben. Das Sternchen gibt an, das 0 oder mehr davon vorkommen können: Eine mehr oder weniger komplette zusammenfassung, findest du in dem oben verlinkten Artikel.


    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook


    Donnerstag, 27. Dezember 2012 13:51
  • Ich glaube, der Logikfehler liegt in meinem Regex, man muss Ihn so einstellen, das er die gesamte Zeichenkette überprüfen sol und nicht nur ob Irgendein Ausschnitt stimmt:

    If Not Regex.Match(Input, "^[a-zA-Z0-9]*$").Success Then

    ^ und $ sorgen dafür das alles durchsucht wird.

    PS: Du solltest die erlaubten Zeichen, vielleicht eher in den Regex rein schreiben, sonst hat erlaubteZeichen wenig Sinn. ;)

            Dim erlaubteZeichen = "qwertzuiopasdfghjklyxcvbnm"
    '...
            If Not Regex.Match(Input, "["& erlaubteZeichen &"]*").Success Then

    Es würde da auch a-z reichen (Die Regex-Klasse wandelt das dann in abcde...xyz um). Wobei man vielleicht auch noch Großbuchstaben einbeziehen sollte.


    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook

    Donnerstag, 27. Dezember 2012 15:39

Alle Antworten

  • Hallo, mir fällt da Regex ein:
    If Not Regex.Match(input, "^[a-zA-Z0-9]*$").Success Then
    	MessageBox("Falsche Eingabe")
    End If
    In den eckigen Klammern kannst du alle Zeichen eingeben die du erlauben willst. Bereiche für Buchstaben und Zahlen werden mit einem bindestrich (-) angegeben. Sonderzeichen wie .\/-+* usw. müssen ein Backslash (\) davor stehen haben. Das Sternchen gibt an, das 0 oder mehr davon vorkommen können: Eine mehr oder weniger komplette zusammenfassung, findest du in dem oben verlinkten Artikel.


    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook


    Donnerstag, 27. Dezember 2012 13:51
  • Boa ging aber schnell, danke aber jetzt kommt ein Fehler ( nicht definiert) bei regex.match zu meiner Verteidigung ich bin Neuling in VB :D
    Donnerstag, 27. Dezember 2012 14:07
  • Füge noch das entsprechende Import am Dateianfang hinzu:

    Imports System.Text.RegularExpressions
    oder zeige auf das kleine rote Viereck unter dem letzten Buchstaben von Regex, klicke auf das auftauchende Fehlersymbol und klicke danach auf den Link "Importieren Sie "System.Text.RegularExpressions".
    Diese schnelle Fehlerkorektur gibts bei vielen Sachen in Visual Studio ;)



    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook

    Donnerstag, 27. Dezember 2012 14:13
  • ausgezeichnet das Programm läuft ! Danke ich wünsche dir schöne Feiertage, hast mir den tag gerettet :D  ! danke nomma
    Donnerstag, 27. Dezember 2012 14:29
  • ok jetzt gibt er den Fehler

    Fehler 1 Fehler bei der Überladungsauflösung, da keine zugreifbare "Input" diese Anzahl von Argumenten akzeptiert. C:\Users\Akif\Desktop\Form1.vb 19 36 Palindrom-Tester 1.2

    was ist da zu machen ?

    Donnerstag, 27. Dezember 2012 15:04
  • In welcher Zeile tritt denn der Fehler auf? Ich nehme mal an, das Input, also das was du überprüfen möchtest nicht deklariert ist:
            Dim Input As String = "MeinInput"
            If Not Regex.Match(Input, "^[a-zA-Z0-9]*$").Success Then
                Console.WriteLine("Falsche Eingabe")
            End If



    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook


    Donnerstag, 27. Dezember 2012 15:13
  • jetzt trifft kein fehler mehr auf aber es funktioniert nicht, vielleicht hab ich ein Logik fehler hier ist er.

    Imports

    System.Text.RegularExpressions

     

    Public

    Class Form1

    'Palindrom Tester

    'Thomas Schuhmacher

    '11084110

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    'Eingabe und Variablen deklarieren

    Dim Input, Kleinbuchstabe As String

    Dim Laenge As Integer

    Dim erlaubteZeichen = "qwertzuiopasdfghjklyxcvbnm"

    'Eingaben Auslesen, Groß in Kleinbuchstaben wandeln

    Input = TextBox1.Text

    Kleinbuchstabe = LCase(Input)

    Laenge = Len(Input)

    If Not Regex.Match(Input, "[a-zA-Z0-9]*").Success Then

    TextBox2.Text = (

    "Falsche Eingabe")

    ElseIf Input = StrReverse(Input) Or

    Kleinbuchstabe = StrReverse(Kleinbuchstabe)

    Then

    TextBox2.Text =

    "Palindrom !"

    Else

    TextBox2.Text =

    "kein Palindrom !"

    End If

     

     

     

    End Sub

    End

    Class

    Donnerstag, 27. Dezember 2012 15:26
  • Imports System.Text.RegularExpressions
    Public Class Form1
        'Palindrom Tester 
        'Thomas Schuhmacher 
        '11084110
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            'Eingabe und Variablen deklarieren 
            Dim Input, Kleinbuchstabe As String
            Dim Laenge As Integer
            Dim erlaubteZeichen = "qwertzuiopasdfghjklyxcvbnm"
            'Eingaben Auslesen, Groß in Kleinbuchstaben wandeln
            Input = TextBox1.Text
            Kleinbuchstabe = LCase(Input)
            Laenge = Len(Input)
            If Not Regex.Match(Input, "[a-zA-Z0-9]*").Success Then
                TextBox2.Text = ("Falsche Eingabe")
            ElseIf Input = StrReverse(Input) Or
                        Kleinbuchstabe = StrReverse(Kleinbuchstabe) Then
                TextBox2.Text = "Palindrom !"
            Else
                TextBox2.Text = "kein Palindrom !"
            End If
        End Sub
    End Class

    Donnerstag, 27. Dezember 2012 15:28
  • wenn du dir das angucken könntest wäre ich dankbar vielleicht hab ich einen Logik fehler  :)

    Donnerstag, 27. Dezember 2012 15:29
  • Ich glaube, der Logikfehler liegt in meinem Regex, man muss Ihn so einstellen, das er die gesamte Zeichenkette überprüfen sol und nicht nur ob Irgendein Ausschnitt stimmt:

    If Not Regex.Match(Input, "^[a-zA-Z0-9]*$").Success Then

    ^ und $ sorgen dafür das alles durchsucht wird.

    PS: Du solltest die erlaubten Zeichen, vielleicht eher in den Regex rein schreiben, sonst hat erlaubteZeichen wenig Sinn. ;)

            Dim erlaubteZeichen = "qwertzuiopasdfghjklyxcvbnm"
    '...
            If Not Regex.Match(Input, "["& erlaubteZeichen &"]*").Success Then

    Es würde da auch a-z reichen (Die Regex-Klasse wandelt das dann in abcde...xyz um). Wobei man vielleicht auch noch Großbuchstaben einbeziehen sollte.


    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook

    Donnerstag, 27. Dezember 2012 15:39
  • wir sind dem ziel näher nur diesmal kommt bei jedem Wort das kein Palindrom ist und großgeschrieben wurde der Text falsche Eingabe  :(
    Donnerstag, 27. Dezember 2012 17:30
  • habs hingekriegt, yeeey ich danke dir vom herzen ! ich wünsche dir noch schöne Feiertage du hast mich dieses weinachten reichlich beschenkt ! :D :D
    Donnerstag, 27. Dezember 2012 17:33
  • Hallo 10 Deutsche Mark (Super)

    In einer Textbox eigent sich das Keypress Event zum Filtern von Eingaben:

       Private Sub ComboBox1_KeyPress(ByVal sender As System.Object, _
                                       ByVal e As System.Windows.Forms.KeyPressEventArgs) _
                                       Handles cbxEnterText.KeyPress
            Dim allowedChars As String = "0123456789ABCDEFabcdef"
            Dim found As Boolean
                    For i As Integer = 1 To allowedChars.Length
                        If e.KeyChar = GetChar(allowedChars, i) Then
                            found = True
                            Exit For
                        End If
                    Next
                    If Not found Then
                        e.Handled = True
                    End If
      
               End Sub

    Vielleicht hilft Dir das.  (Zurück zur DM!)

    Gruss Ellen


    (VB2008 Express, VB2010 Express, VST2008 professional) Ellens Codegallerie


    • Bearbeitet Ellen Ramcke Donnerstag, 27. Dezember 2012 20:50
    Donnerstag, 27. Dezember 2012 20:48