Wie prüft man mit Java ob ein Kleinbuchstaben in einem String vorhanden ist?

5 Antworten

Mit diesem kleinen Codestück:

String input = "ABCDeFG";

boolean hasLowercaseCharacter= false;
for (char ch: input.toCharArray())
    if ('a' <= ch && ch <= 'z') hasLowercaseCharacter=true;

Oder in einer Funktion:

for (char ch: input.toCharArray())
    if ('a' <= ch && ch <= 'z') return true;
return false;
Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

malte314  23.11.2021, 14:25

Ah, natürlich! Zu oft vergesse ich, dass chars ganz normal als integer verwendet werden können und vielen geht es bestimmt ähnlich. Danke für diese Antwort!

1

Es gibt die Methode `String+toUppercase()`, die einen String mit nur Großbuchstaben aus dem ursprünglichen erzeugt:

"aabbcc".toUpperCase() -> "AABBCC"
"FoObaR".toUpperCase() -> "FOOBAR"

Nun könntest Du also die uppercase variante mit der ursprünglichen vergleichen. Sind sie gleich, so waren keine Kleinbuchstaben enthalten.

String s = "STAR WARS";
if (s.equals(s.toUpperCase()) {
    System.out.println("Möge die Macht mit Dir sein!");
}
Woher ich das weiß:Hobby

malte314  23.11.2021, 07:38

Ist natürlich nicht wahnsinnig performant, da der gesamte String zweimal traversiert wird, aber dafür ist es simpel und sehr lesbar und einfach verständlich, da kann man diese marginale Performance-Einbuße sehr gut in Kauf nehmen.

2

Hallo,

man prüft ob der Bytewert der Zeichen im String zwischen 97 und 127 ("a" bis "z") liegt.

g

Harry


MrAmazing2  23.11.2021, 10:46
'a' <= derChar && derChar <= 'z'

würde ich da bevorzugen, das versteht dann jeder

2
heizfeld  23.11.2021, 10:55
@MrAmazing2

Ich habe in vielen Sprachen programmiert, Java war leider nicht dabei, daher die allgemein gehaltene Programmierung. DIe eleganteste Lösung scheint mit die Wandlung des Strings in Großbuchstaben und der anschließende Vergleich der beiden Strings zu sein, kostet aber die meiste Rechenzeit.

1
MrAmazing2  23.11.2021, 10:57
@heizfeld

Sollte in JS, C, C++, etc. genauso sein. In Python gehts sogar so: 'a' <= derChar <= 'z' :D

Also ich finde meine am elegantesten :(

Aber hast schon recht, die ist nicht schlecht

0

Du kannst RegEx benutzen:

System.out.println("Blablabla toller Text".matches("^.*[a-z].*$")); //true
System.out.println("BLABLABLA NOCH EIN TEXT".matches("^.*[a-z].*$")); //false
Woher ich das weiß:eigene Erfahrung

Ein Array aus Chars anlegen in denen jeder kleine Buchstabe enthalten ist und dann prüfen ob der Inhalt des Chars == dem Inhalt des String sind.

Ich weiß nicht ob in Java die Betrachtung eines Strings behandelt werden kann wie ein char Array aber so sollte das ganze möglich sein