String überprüfen ob nur Buchstaben enthalten sind?

mkay22

Mitglied
Hallo,

ich kann mit der Konsole ein String füllen nun soll gleich danach überprüft werden ob der String auch wirklich nur Buchstaben enthält
Code:
Java:
               String firstNameS = "";

			System.out.println("Geben sie Ihren Vornamen ein: ");
			firstNameS = console.readLine();
			if (firstNameS.contains("!") || firstNameS.contains("/") || firstNameS.contains("_") || firstNameS.contains("?") || firstNameS.contains("€") || KEINE ZAHLEN){
				
				System.err.println("Es dürfen keine Zahlen sowie !, /, _, ?, € Zeichen enthalten sein!");
				System.out.println("Geben sie Ihren Vornamen ein: ");
				firstNameS = console.readLine();
				
			}

Wär nett wen Jemand die Funktion / Antwort wüsste

MFG Max
 
Zuletzt bearbeitet:
Du hast recht^^, ABER das gilt nur wenn ausschließlich Zahlen im String enthalten sind wenn die eingabe
1 wär dann würde die if bedingung alarm schlagen bei test1 jedoch nicht genau das will ich aber^^
mir ist es egal ich habe es jetzt auf den Unschönen Weg (meiner Meinung nach) gelöst, wenn es jedoch keine Funktion dafür gibt dann ist das wohl die einzigste möglichkeit.
Lösung:
Java:
			if (firstNameS.contains("!") || firstNameS.contains("/") || firstNameS.contains("_") || firstNameS.contains("?") || firstNameS.contains("€") || firstNameS.contains("0")|| firstNameS.contains("1")|| firstNameS.contains("2")|| firstNameS.contains("3")|| firstNameS.contains("4")|| firstNameS.contains("5")|| firstNameS.contains("6")|| firstNameS.contains("7")|| firstNameS.contains("8")|| firstNameS.contains("9")){
				
				System.err.println("Es dürfen keine Zahlen sowie !, /, _, ?, € Zeichen enthalten sein!");
				System.out.println("Geben sie Ihren Vornamen ein, diesmal ohne Sonderzeichen und/oder Zahlen!!!: ");
				firstNameS = console.readLine();
				
			}
 
Du hast recht^^, ABER das gilt nur wenn ausschließlich Zahlen im String enthalten [...]
Das ist Quatsch. Mit Regexen kannst Du nahezu jede beliebige Struktur definieren und dann prüfen, ob ein String diese Struktur hat. Aber, wenn Deine Lösung für Dich jetzt funktioniert, auch gut. Behalt Regexe im Hinterkopf und setze Dich damit auseinander, wenn Du Zeit dafür hast.
 
Zuletzt bearbeitet von einem Moderator:
Du prüfst ob es etwas enthält dass nicht da sein soll, aber wie nilehammer schon gesagt hat wäre es mit regex einfacher da du mit einer regex überprüfen könntest ob der String nur aus Buchstaben besteht. Der Ausdruck ist einfach: [A-z]* (oder [A-z]+ wenn du keinen leeren Strings zulassen willst). Kombiniere das mit der matches Methode und du hast eine if-Anfrage die viel kürzer ist.

EDIT: Der Vorteil von regex ist dass du mit einem Ausdruck prüfen kannst ob es so aussehen so wie es aussehen soll.
 
Zuletzt bearbeitet:
Damit du auch wirklich nur zulässige Zeichen hast, könntest du es auch so überprüfen:
(finde ich am schönsten verständlich)

Java:
            System.out.println("Geben sie Ihren Vornamen ein: ");
            firstNameS = console.readLine();
            while(!isAlpha(firstNameS)) {
                System.err.println("Es dürfen keine Zahlen sowie !, /, _, ?, € Zeichen enthalten sein!");
                System.out.println("Geben sie Ihren Vornamen ein: ");
                firstNameS = console.readLine();
            }

   ...

	public boolean isAlpha(String text) {
		for (char c : text.toCharArray()) {

			// a - z
			if (c >= 'a' && c <= 'z')
				continue;

			// A - Z
			if (c >= 'A' && c <= 'Z')
				continue;

			// ö, ü, ä, ß
			if (c == 'ö' || c == 'ß' || c == 'ä' || c == 'ü')
				continue;

			return false;
		}
		return true;
	}
 
Damit du auch wirklich nur zulässige Zeichen hast, könntest du es auch so überprüfen:
(finde ich am schönsten verständlich)

Java:
            System.out.println("Geben sie Ihren Vornamen ein: ");
            firstNameS = console.readLine();
            while(!isAlpha(firstNameS)) {
                System.err.println("Es dürfen keine Zahlen sowie !, /, _, ?, € Zeichen enthalten sein!");
                System.out.println("Geben sie Ihren Vornamen ein: ");
                firstNameS = console.readLine();
            }

   ...

	public boolean isAlpha(String text) {
		for (char c : text.toCharArray()) {

			// a - z
			if (c >= 'a' && c <= 'z')
				continue;

			// A - Z
			if (c >= 'A' && c <= 'Z')
				continue;

			// ö, ü, ä, ß
			if (c == 'ö' || c == 'ß' || c == 'ä' || c == 'ü')
				continue;

			return false;
		}
		return true;
	}
Warum nich per Regex? So ist das doch viel umständlicher und länger.
 
Kurz und knapp:

Java:
public boolean isAlpha(String text) {
  return text.matches("[a-zA-Z]");
}

Trotzdem solltest du dich mit regulären Ausdrücken mal auseinandersetzen. Die können einem viel Arbeit ersparen. 🙂

Der o.g. Code prüft, ob nur zeichen von a bis z und A bis Z (ja, reguläre Ausdrücke unterscheiden Groß- und Kleinschreibung) enthalten sind - und wenn ja, dann gibts ein true, ansonsten false zurück.
ä ö, ü, ß und was es sonst noch so gibt müsste man je nach Lokalisierung natürlich noch hinzufügen.

Java:
public boolean isAlpha(String text) {
  return text.matches("[a-zA-ZäÄöÖüÜß]");
}
 
Zuletzt bearbeitet:
@pirxelbaer
Java-Anfänger sollten sich mit der ASCII-Tabelle befassen und allgemein grundlegenden Themen näher zu kommen.

Ich selbst hätte auch RegEx verwendet. Aber zum verstehen, ist mein Code angenehmer finde ich.
 
Also ich wollte euren code verwenden aber ich wollte zahlen zulassen und das ganze auch bei mehrer zeichen also dies ist mein Code
Java:
public static boolean isAlpha2(String text) {
        boolean is= false;
        for (char c : text.toCharArray()) {

            // a - z
            if (c >= 'a' && c <= 'z')
                {is=true;}

            // A - Z
            if (c >= 'A' && c <= 'Z')
            {is=true;}

            // ö, ü, ä, ß
            if (c == 'ö' || c == 'ß' || c == 'ä' || c == 'ü')
            {is=true;}

        }
        return is;

Also ich habe euren nur überarbeitet
 
Zuletzt bearbeitet von einem Moderator:

Zurück
Oben