String- bzw. Zeichenvergleich



  • Ich möchte mit einer if Abfrage prüfen, ob vor und nach dem "-" ein Leerzeichen vorhanden ist. Leider klappt es nicht. Hat einer von euch eine Idee. Mein Ansatz war:

    string namen = "Name-Vorname";
    
    if(name[name.IndexOf('-')+1].Equals(' '))
     MessageBox.Show("Ein Leerzeichen nach dem - fehlt");
    else if(name[name.IndexOf('-')+1].Equals(' '))
     MessageBox.Show("Ein Leerzeichen vor dem - fehlt");
    

    Auch eine Convertierung als String mit

    Convert.ToString(...)
    

    war nicht erfolgreich.



  • Du meinst wohl

    string name = "Name-Vorname"; // also ohne 'n' am Ende
    

    sonst gäbe es ja einen Compilerfehler -)

    Deine Abfrage ist aber genau falsch herum - du willst ja überprüfen, ob das Leerzeichen nicht vorhanden ist, also

    if( ! name[name.IndexOf('-')+1].Equals(' ')) // beachte das ! (also das 'nicht')
    

    Besser würde es aber so gehen:

    int nPos = name.IndexOf('-');
    if(nPos >= 0) // Abfrage, ob Zeichen überhaupt vorhanden ist
    {
      if(name[nPos+1] != ' ')
        MessageBox.Show("Ein Leerzeichen nach dem - fehlt");
      else if(name[nPos-1] != ' ') // du hattest hier noch '+1' stehen!!!
        MessageBox.Show("Ein Leerzeichen vor dem - fehlt");
    }
    

    Wenn das Minuszeichen '-' jedoch am Anfang oder am Ende des Namens wäre, dann würde dein als auch mein Code eine IndexOutOfRange-Exception liefern, da auf ungültige Positionen zugegriffen würde.

    Du müßtest dann noch zusätzlich auf die Position abfragen, d.h.

    if(nPos > 0)
    // bzw.
    if(nPos < name.Length-1)
    

    Probiere es mal aus...

    P.S. Das Convert.ToString(string) ist nur eine Dummy-Methode, da ja der Parameter schon ein String ist -)



  • Warum nicht einfach nach " - " suchen? Wenn vorhanden dann ok, wenn nicht dann nicht 😃

    if (!name.Contains(" - "))
        MessageBox.Show("Vor oder nach dem - fehlt ein Leerzeichen");
    

    Kann man ja auch einzelnd abfragen falls es ganz genau sein soll:

    if (!name.Contains(" -"))
        MessageBox.Show("Ein Leerzeichen vor dem - fehlt");
    else (!name.Contains("- "))
        MessageBox.Show("Ein Leerzeichen nach dem - fehlt");
    

    Dann spaart man sich dieses index gefummel.



  • Danke an Euch beiden!
    @Th69
    ich habe Ihren Vorschlag genommen "Name-Vorname" war allerdings nur ein zweckmäßiges Beispiel. Hinterher habe ich noch Leerzeichen einfügen lassen mit Insert. Nun funktioniert es auch.
    Ich habe für Ihr Beispiel aber 2 if Anweisungen genommen, da sonst nicht beide Fälle beim "Klick OK" überprüft werden würden.



  • Hallo sventesker,

    darfst mich ruhig duzen (sonst fühle ich mich noch so alt -)

    Aber schön, daß es jetzt bei dir klappt...


Anmelden zum Antworten