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
-
Shade -
18. Februar 2003 um 12:13 -
Unerledigt
-
-
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
-
Maximilian Rupp
27. Dezember 2024 um 12:08 Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!