Java String checken?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Die einfachste Lösung ist wahrscheinlich wirklich per Regex. Würde dann so aussehen:

public static boolean isNeoLatin(String word) {
	return word.matches("[a-z]*");
}

Das [a-z] bedeutet halt, dass das Zeichen zwischen a und z (nur Kleinbuchstaben) sein muss und das Sternchen hintendran bedeutet, dass die Anzahl beliebig groß ist (inklusive 0 Zeichen). Falls es mindestens ein Zeichen lang sein muss, muss statt dem * halt ein + hin.

oder du gehst jeden Buchstaben durch und prüfst, ob er im erlaubten Bereich ist:

public static boolean isNeoLatin(String word) {
	for (char c:word.toCharArray()) {
		if (c < 'a' || c > 'z') {
			return false;
		}
	}
	return true;
}

oder du machst eine Liste mit allen erlaubten Buchstaben und prüfst für jedes Zeichen, ob es in den erlaubten Buchstaben vorkommt:

public static boolean isNeoLatin(String word) {
	for (char c:word.toCharArray()) {
		if ("abcdefghijklmnopqrstuvwxyz".indexOf(c) < 0 ) {
			return false;
		}
	}
	return true;
}
ob es dem Neo Latin entspricht. Heißt a-z

Dann musst du doch nur alle chars durchiterieren und schauen, ob sie >= 'a' und =< 'z' sind, fertig. Wozu eine Map?

Mit Streams ausgedrückt (was man natürlich genausogut mit einer for-Schleife machen kann, aber ich bin tippfaul):

"abcde".codePoints().allMatch(c -> c >= 'a' && c <= 'z');

Klar, kann man auch mit Regex und "[a-z]" machen. Da ist es auch leichter, komplexere Regeln umzusetzen (etwa wenn auch Umlaute & Co. dabei sein sollen - das obige beschränkt sich auf ASCII).


TheStalker64 
Fragesteller
 07.07.2021, 12:08

Stimmt chars sind ja auch numerisch, ganz vergessen

0