Wie tu ich den am elegantesten einen String auf erlaubte zeichen prüfen wenn zb. nur Hexa zahlen erlaubt sein sollen(sprich 1-9 & A-F)?
String Prüfen
-
-
ICH wuerds mit regexs machen, jakarta's ORO oder apache regexp bzw. im 1.4er JDK sinds eh dabei; wenn du's allerdings nur an der einen Stelle fuer dein Projekt brauchst,dann sollte string.getChars(...) und eine ueberpruefung der einzelnen characters auch reichen
-
Naja, in EPROG is zB leider nur JDK 1.3.1 erlaubt. Die meisten Aufgaben ließen sich mit ein paar regexps in 1/3 der Zeilen lösen...
-
hm, das hat jetzt sicher alle klarheiten beseitigt =)
am schnellsten löst du das indem du die parseLong - methode aus dem long-wrapper vergewaltigst:
String dta = "FF34ABC";
try
{
Long.parseLong(dta,16);
}
catch(NumberFormatException nofx)
{
// falsche zeichen
}der versucht den hex-string (basis 16) in einen long umzuwandeln, und das gelingt
logischerweise nur falls der string keine ungültigen zeichen enthältmfg
art -
danke,aber das mit dem Hex war nur ein beispiel.
was ich konkret machen will ist:
gülitge eingabe:0-9,ende(zum beenden des progs )
alles andere=>fehler
werd mir also wohl mal regex anschaun müssen.wird eh ned so schwer sein. -
-
hmm für die zahlen ist klar:
Pattern p = Pattern.compile("(0-9)*");
Matcher m = p.matcher("input");
boolean b = m.matches();aber wie such ich nach "ende" ?
einfach:
Pattern p = Pattern.compile("end");
Matcher m = p.matcher("input");
boolean b = m.matches();
? -
Zitat
Original geschrieben von Shade
danke,aber das mit dem Hex war nur ein beispiel.
was ich konkret machen will ist:
gülitge eingabe:0-9,ende(zum beenden des progs )
alles andere=>fehler
werd mir also wohl mal regex anschaun müssen.wird eh ned so schwer sein.
schau dir mal bsp. 'hochk' an: http://eprog.sourceforge.net/eprog/1025/0126071/ -
mit regex klappts wunderbar.
mein problem ist wohl meine input leser.
ich lese mitpublic static String input()
throws IOException
{String in=new String();
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
in=input.readLine();
return in;
}aber wenn ich jetzt zb prüfe ob
input="beliebiger String"
ist krieg ich immer false.
wieso :confused: -
input.equals("irgendwas") vielleicht? "==" vergleicht Referenz (entspricht ca. Pointer), ".equals()" vergleicht den Inhalt...
-
yop daran lags.hab schon gedacht das es sowas sein muss(nachdem ich alles andere ausgeschlossen hab) wusst aber nicht genau was.
naja jetzt hab ich das programm perfekt fertig.
Fazit:
Zeitaufwand=
Programmieren&Entwickeln&etc=30%
Debugging=70% -
Is eh noch a angenehmer Schnitt
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!