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...