View Full Version : [Frage] Search Integer
Kann man einen String nur nach Zahlen durchsuchen ?
Wenn ja wie ?
finyfunny
30-05-2003, 18:12
@ ikaru ja kann man denk ich schon .nen genauen befehl gibts zwar glaub ich nicht aber man kann den Befehl isDigit (http://java.sun.com/j2se/1.4.1/docs/api/java/lang/Character.html#isDigit(char))(char ch)
(Determines if the specified character is a digit.)
aus der Klasse Character verwenden .
man kann mit einer for_schleife den ganzen string durchsuchen:
Character.isDigit(str.charAr(i);
wobei str eben der string und i die schleifenvariable ist
lg finyfunny
Jo, entweder du machst das mit isDigit() wie finnyfunny vorgeschlagen hat, oder geht auch z.B. so:
public static void main(String[] args)
{
String test = "ad32sdf4dd0dfg09";
System.out.println(searchInteger(test));
}
private static int searchInteger(String s)
{
String result = "";
for(int i=0;i<s.length();i++)
{
try
{
Integer.parseInt(s.charAt(i)+"");
result += s.charAt(i);
}
catch(NumberFormatException x)
{
continue;
}
}
return Integer.parseInt(result);
}
liefert dann z.B. 324009
Ich weiß aber leider net genau was du brauchst (?)
Gigantas
30-05-2003, 18:34
naja beide lösungen dürften zwar funktionieren, viel schöner ist aber der einsatz einer regulären expression
beschrieben unter http://developer.java.sun.com/developer/technicalArticles/releases/1.4regex/
SUPER DANKE!!! ich werds dann morgen ausprobieren !!!
Danke Danke Danke schon mal im vorhinein :thumb::D:thumb::D:thumb::D:thumb:
Ich hasse regexp. Aber hast Recht! :D
sers
Ich finde regex ein wirklich gutes werkzeug, um eingaben zu parsen. Ist auch nicht wirklich kompliziert ein pattern zu erstellen (Referenzmaterial gibt es genug). Gebe aber zu, daß das pattern dann sehr unübersichtlich ist, aber man kann sich da auch helfen, indem man die teile einzeln definiert, und danach mit Stringoperation "+" zusammenfügt. Unter java kann man auch sehr einfach dann die gematchten gruppen extrahieren und z.B. direkt einer parseFloat methode oder ähnlichem übergeben. Führt zu viel eleganterem Code als das parsing zeichenweise "hardcoded" durchzuführen. Also sprich nicht so hässlich über regex :-)
Pattern pattern = Pattern.compile (input_component_pat);
if (!match.matches())
/* error() */
float a = Float.parseFloat (match.group (first_float_group));
float b = Float.parseFloat (match.group (second_float_group));
regex rules ;-))
julian
Hehe Ich find den namen AntiBit so witzig.
hahaha Kann immer darueber lachen. Antibit hahahaha
Ähh ja hehe... was genau ist daran so lustig? :tongue1:
vBulletin® v3.7.1, Copyright ©2000-2009, Jelsoft Enterprises Ltd.