String überprüfen

Hallo,

Ich muss einen String überprüfen, ob er bestimmte Zeichen enthält.
Z.B. soll ein String keine Buchstaben enthalten, ein anderer keine Ziffern.
Ich weiss nicht, wie lang der String ist.
Ich habe es mit match(…) probiert, aber bei Strings, die sowohl gewünschte als auch ungewünschte Zeichen enthalten, klappt es nicht.

Beispiel:

String a="12739";
String b="abdie";
String c="adbv632";

a.match("[a-zA-Z]+") //gibt false
b.match("[a-zA-Z]+") //gibt true
c.match("[a-zA-Z]+") //gibt false, sollte aber true sein

a.match("[0-9]+") //gibt true
b.match("[0-9]+") //gibt false
c.match("[0-9]+") //gibt false, sollte aber true sein

Wie bekomme ich bei String c raus, das es keine Zahl darstellt, sondern einen Zeichenmischmasch?

Jan

Hallo,

sers

Ich muss einen String überprüfen, ob er bestimmte Zeichen
enthält.
Z.B. soll ein String keine Buchstaben enthalten, ein anderer
keine Ziffern.

das ist das problem!?

Beispiel:

String a=„12739“;
String b=„abdie“;
String c=„adbv632“;

a.match("[a-zA-Z]+") //gibt false
b.match("[a-zA-Z]+") //gibt true
c.match("[a-zA-Z]+") //gibt false, sollte aber true sein

a.match("[0-9]+") //gibt true
b.match("[0-9]+") //gibt false
c.match("[0-9]+") //gibt false, sollte aber true sein

Wie bekomme ich bei String c raus, das es keine Zahl
darstellt, sondern einen Zeichenmischmasch?

ja wieso willst du das? für deine problemstellung ist das doch völlig korrekt!
du kannst natürlich auch beides untersuchen:

if (c.match("[a-zA-Z]") && c.match("[0-9]"))
{} /\* enthält ziffern UND buchstaben! 
allerdings könnten auch sonderzeichen drin sein (z.b.: - \_), was vermutlich auch nich im sinne des erfinder ist! 
willkommen in meiner gehassten welt der regulären ausdrücke :wink: \*/

Jan

mfg
Geisterkarle

Moin

Z.B. soll ein String keine Buchstaben enthalten, ein anderer
keine Ziffern.

Character.getType() auf alle Buchstaben einzeln loslassen.

Ich weiss nicht, wie lang der String ist.

String.length() ?

cu

Hallo Jan!

Ich muss einen String überprüfen, ob er bestimmte Zeichen
enthält.
Ich habe es mit match(…) probiert, aber bei Strings, die
sowohl gewünschte als auch ungewünschte Zeichen enthalten,
klappt es nicht.

Beispiel:

String a=„12739“;
String b=„abdie“;
String c=„adbv632“;

c.match("[a-zA-Z]+") //gibt false, sollte aber true sein
c.match("[0-9]+") //gibt false, sollte aber true sein

Wie bekomme ich bei String c raus, das es keine Zahl
darstellt, sondern einen Zeichenmischmasch?

Da bin ich als Perl-Programmierer in Java auch zuerst drauf
reingefallen. Das Problem ist hier, dass die matches-Methode
immer den gesamten(!) String matchen will und false zurück
gibt, wenn sie es nicht schafft.

Jeder Regex wird also klammheimlich mit ^regex$ (sprich „suche
von Stringanfang bis Stringende“) ergänzt. Damit wird klar,
warum Deine matches oben nicht funktionieren.

Die Funktion, die Du eigentlich suchst, ist find(), die auch
Teilstrings findet, die auf das Muster passen. Die gefundenen
Teilstrings kannst Du Dir dann mit group() ausgeben
(siehe Matcher-Klasse unter http://java.sun.com/j2se/1.4.2/docs/api/java/util/re… )

Einfacher führt hier aber ein

c.matches("[a-zA-Z0-9]+")

zum Ziel (alles was aus Buchstaben und Ziffern besteht).

Gruß,
-Andreas.