Java Korrektheit der Eingabe von Strings überprüfen

king0r

Lt. Junior Grade
Registriert
Juli 2009
Beiträge
485
Hallo,

ich soll eine Methode schreiben, die überprüft, ob ein eingegebener String über ein Eingabefenster mittels javax.swing.JOptionPane entsprechende Anforderungen erfüllt.
Die Methode selbst ist vom Typ boolean.

Hier die verschiedenen Fälle, die überprüft werden sollen:

- Die zu prüfende Zeichenkette existiert nicht.

- Die zu prüfende Zeichenkette ist leer.

- Die zu prüfende Zeichenkette umfasst nur ein einziges Zeichen.

- Die zu prüfende Zeichenkette umfasst nur ein einziges Zeichen.

- Die zu prüfende Zeichenkette besteht aus mehr als einem Wort.

- Die zu prüfende Zeichenkette enthält nicht nur Buchstaben, sondern auch andere Zeichen.

Wie kann ich also die o.g. Fälle am geschicktesten abprüfen. Sobald eine Bedingung erfüllt ist, muss die Eingabe wieder von vorne starten.

Bei Bedarf soll man auf die Bibliotheksmethoden zurückgreifen, die in den Klassen java.lang.String bzw. java.lang.Character vordefiniert sind.

Ist das ganze über einen switchcase() realisierbar?

Ich hoffe, dass mir das jemand helfen kann!?
 
Switch/case funktioniert nicht mit Strings. Du brauchst also if Abfragen. Edit: Eine elegante Variante wären reguläre Ausdrücke.
 
Zuletzt bearbeitet:
Wie wäre es einfach mit ein paar "if" - Abfragen? Geht sicher auch schöner, aber tut es doch.
 
Hört sich für mich an wie

if(FALLBEDINGUNG)
return false
else if
...

Evtl. hilft dir die Java API der String Klasse:
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html

Hier n paar kleine Hilfen

myString.isEmpty();
Gibt True, wenn der String myString leer ist

myString.equals(null);
Gibt True, wenn der String myString nichts enthält

myString.length();
Gibt die Anzahl der Buchstaben im String myString zurück.

Folgender Code-Fetzen prüft, ob sich eine bestimmte Zeichenfolge in deinem String befindet
String myString = "Peter";

CharSequence mySet = "eter";

boolean b = myString.contains(mySet);
if(b)
System.out.print("String myString entählt CharSequence mySet");
Viel Spaß damit
Ich hoffe ich konnte Helfen.

Grüße
 
Hallo Jungs,

Danke für die Antworten.
Aber gibt es echt nichts eleganteres als lauter if- Anweisungen?

Entspricht myString.isEmpty(); der Bedingung: "Zeichenkette existiert nicht"?

Gruß
 
Zuletzt bearbeitet:
Um Wörter zu zählen einfach mit String.split(' ') ein Array zurückgeben, und die Länge prüfen.

Ansonsten sind bei dem Thema üblicherweise Regular-Expressions und Validatoren angesagt.
 
Mein Problem liegt jetzt noch darin, dass ich stoppen soll, sobald eine Bedingung erfüllt ist. Mit if Abfragen kommt man da also nicht recht weit, da er ja einfach sturr weiter macht, unabhängig davon wieviele Bedingungen bereits erfüllt sind.
 
Nebenbei:
Switch Anweisungen mit Strings wird's, wenn ich nicht irre, ab JDK 7.0 geben.
 
Warum so kompliziert. Sämtliche Überprüfungen lassen sich mit einem einzigen Regulären Ausdruck erschlagen. Und dann benutzt du die passende Methode der String Klasse: boolean matches(String regex)

Das ganze mit if-Abfragen zu erledigen wollen, geht natürlich auch, ist aber Schmarrn und ziemlich mieser Programmierstil.
 
SheepShaver schrieb:
Warum so kompliziert. Sämtliche Überprüfungen lassen sich mit einem einzigen Regulären Ausdruck erschlagen. Und dann benutzt du die passende Methode der String Klasse: boolean matches(String regex)

Das ganze mit if-Abfragen zu erledigen wollen, geht natürlich auch, ist aber Schmarrn und ziemlich mieser Programmierstil.

Hy,

Danke fürs Feedback! Wie gehe ich da genau vor? Sorry habe mit der regex Methode noch nie gearbeitet, wird aber oft für Strings empfohlen.

Achja, was ist eurer Meinung nach die geschickteste Methode, um die Anzahl von Wörtern aus einem String auszulesen. Mit StringTokenizer funktioiert das perfekt, ist aber leider eine legacy Klasse und sollte deshalb nicht mehr verwendet werden.

Gruß
 
Zuletzt bearbeitet:
Nunja, wenn man keine Ahnung von regulären Ausdrücken hat, kann das doch sehr verwirrend und erschlagend sein. Da sind if Anweisungen doch erstmal einfacher.

darkboft schrieb:
Hört sich für mich an wie

if(FALLBEDINGUNG)
return false
else if
...

Genau so!


Code:
if(myString.isEmpty()){
  return true;
}else if (myString.equals(null)){
  return true;
}else if ().....

Die return-Anweisung sollte natürlich true oder false, je nachdem was du brauchst, zurückgeben, wenn einer der Punkte zutrifft.
Ansonsten geht es nur über reguläre Ausdrücke (RegEx) einfacher, hier würde ich aber empfehlen sich einfach mal einzulesen, wenn man da noch nie was von gesehen oder gehört hat.



king0r schrieb:
...
Achja, was ist eurer Meinung nach die geschickteste Methode, um die Anzahl von Wörtern aus einem String auszulesen. ...

An den Leerzeichen in ein Array splitten (split) und gucken wie lang das Array ist. Oder in ein CharacterArray konvertieren (toCharArray) und dann Leerzeichen im Array+1 nehmen.
Wobei ersteres sicherlich einfach und schöner ist. ;)
 
Zuletzt bearbeitet:
hm ich lese hier nun schon zum zweiten mal myString.equals(null)... ein equals(null) sollte IMMER false geben und das tut es meines Wissens auch bei String :D
 
Ohh, da könntest du wohl recht haben! :D

Dann halt nen leeren String zuvor anlegen und mit dem vergleichen statt mit null. ;)
 
king0r schrieb:
Hy,

Danke fürs Feedback! Wie gehe ich da genau vor? Sorry habe mit der regex Methode noch nie gearbeitet, wird aber oft für Strings empfohlen.

Achja, was ist eurer Meinung nach die geschickteste Methode, um die Anzahl von Wörtern aus einem String auszulesen. Mit StringTokenizer funktioiert das perfekt, ist aber leider eine legacy Klasse und sollte deshalb nicht mehr verwendet werden.

Gruß
Für reguläre Ausdrücke ist diese Seite ziemlich hilfreich:
http://www.regular-expressions.info/reference.html

Zu deiner zweiten Frage, benutze die split-Methode der String Klasse:
Code:
String[] tmp = myString.split("\\s+");
int anzahlWoerter = tmp.length;

Auch hier kommt ein regulärer Ausdruck zum Einsatz. Die Wörter können durch eine beliebige Anzahl von Whitespace-Zeichen getrennt sein.


kaikuwe schrieb:
Dann halt nen leeren String zuvor anlegen und mit dem vergleichen statt mit null. ;)
Ahem, das entspricht myString.isEmpty() in umständlich... ;)
 
Zuletzt bearbeitet:
@ SheepShaver:
Ich würde folgendes machen:
Code:
String[]tmp = myString.[B]trim()[/B].split("\\s+");
int anzahlWoerter = tmp.length;
Wenn am Anfang von myString whiteSpaces auftauchen sollten, wäre das Ergebnis sonst um 1 zu gross.
 
Zurück
Oben