Prüfen, ob ein String 2x das selbe Zeichen hat

NicoRyl

Mitglied
Hallo zusammen.

Im Rahmen meines E-Mail Validators möcte ich prüfen, ob die E-Mail 2x das @-Zeichen enthalten hat.
Weiß jemand, wie ich das machen könnte?

Ich hatte an etwas gedacht wie " if (email.contains("@") >= 2) {return "Email nicht gestattet."} "

Vielen Dank schonmal im Voraus!
 
contains sagt nur aus, ob ein Zeichen enthalten ist. Was du möchtest ist zählen.
Du ziehst eine Schleife über deinen String und sieht char für char nach, ob es ein '@' ist.
Alternativ: regex.
 
falls es einmal enthält -> substring machen mit dem rest
rest durchgehen -> falls es nochmal eins hat fehler
 
falls es einmal enthält -> substring machen mit dem rest
rest durchgehen -> falls es nochmal eins hat fehler
Vielen Dank, hat funktioniert.

if (email.substring(findAt + 1).contains("@")) {
check = false;
}

Ich hab das erste @ was er findet in "findAt" gespeichert und dann ab dort nach einem weiteren gesucht. Funktioniert einwandfrei!
 
Wenn du das schon so machst:
Java:
int firstIndex = email.indexOf('@');
if (firstIndex == -1  || email.indexOf('@', firstIndex + 1) != -1) {
  // Keine Email
}
 
Offtopic: Ich hatte zufällig gerade eine Anforderung wo ich bei JavaScript den Text zwischen 2 #-Zeichen brauchte. Die Lösung sah dem hier sehr ähnlich, indexOf mit startIndex ftw.
 
Der Fall das es gar nicht vorkommt wird hier nicht abgedeckt.

1. War das nicht die Fragestellung: " Ich hatte an etwas gedacht wie if (email.contains("@") >= 2) {return "Email nicht gestattet."} "
2. Ging es mir um die Verwendung von lastIndexOf. Die Abfrage entsprechend umzustellen ist jetzt ja nicht die große Kunst:

Java:
        int firstAppearance = email.indexOf('@');
        if (firstAppearance == -1 || firstAppearance != email.lastIndexOf('@')) {
            return "Es muss exakt ein @ Zeichen vorkommen";
        }
 
BTW: Mail-Adressen dürften mehr als ein '@' enthalten, allein die Anzahl ist kein Zeichen für invalide Mail-Adressen.
 

Zurück
Oben