Hallo,
Ich überlege seit knapp einer Stunde, suche im Internet und finde einfach nichts. Vielleicht ist mein Problem so einfach zu lösen, dass ich es nicht finde, ich weiß es nicht.
So, mal angenommen ich habe einen string mit folgendem inhalt:
Java:
String test ="hey das ist ein test mit der zufaelligen nummer: 152345. Finde nun die Nummer heraus.";
Die Nummer in dem String ist dabei variabel und ändern sich bei jedem Aufruf. Ich möchte nun aus meinem String diese Nummer auslesen. Sie steht dabei immer nach dem Doppelpunkt und vor einem Punkt. Wie komme ich denn an sie heran?
String test ="hey das ist ein test mit der zufaelligen nummer: 152345. Finde nun die Nummer heraus.";Scanner sc =newScanner(test);System.out.println(sc.findInLine("\\d+"));
Das kommt darauf an, ob du es schaffst, einen regulären Ausdruck anzugeben, der genau auf das Muster der gesuchten Zahl passt. Es gibt einige Erweiterungen in Sachen Regex in Java, um Dinge zu formulieren wie: "Eine nicht-leere Zeichenfolge aus den Zeichen 0 bis 9, wenn links von dieser Zeichenfolge genau bla (nicht) steht und/oder rechts von ihr (nicht) blubb steht."
publicclassWhatever{privatestaticfinalPattern WHATEVER =Pattern.compile("(?:nummer :)([0-9]+)(?:\\.)");publicStringmagischeZahl(String eingabe){Matcher m = WHATEVER.matcher(eingabe);if(!m.find())returnnull;return m.group(1);}}
Ungetestet, wie immer.
Das Ding funktioniert bestenfalls für eine Übereinstimmung. Falls im String mehrere vorkommen können sollen, wäre [c]find()[/c] entsprechend oft aufzurufen.
Hey dankeschön. Aber ich bringe das Ding nicht zu laufen. Mir werden immer wieder Fehler mit einer void-Method angezeigt.
Was soll denn das magischeZahl da?
Könntest du deinen Code bitte mal kurz durchtesten und den ganzen Java-Code posten?
Oh, bei mir scheitert es schon, bevor ich die Funktion überhaupt aufrufen kann.
Ich verstehe nicht so ganz, wie ich das String eingabe zu verstehen habe. Soll ich dort den String initialisieren?
Ich dachte an so etwas:
Java:
importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassWhatever{privatestaticfinalPattern WHATEVER =Pattern.compile("(?:nummer :)([0-9]+)(?:\\.)");publicStringmagischeZahl(String eingabe ="this is string nummer : 1452. hello"){Matcher m = WHATEVER.matcher(eingabe);if(!m.find())returnnull;return m.group(1);}}
Aber dann zeigt mit eclipse was mit delete tokens.
Oh, danke für den Hinweis, hatte das schon wieder vergessen. Sollte nun besser aussehen, funktioniert allerdings immer noch nicht?
Java:
importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassWhatever{privatestaticfinalPattern WHATEVER =Pattern.compile("(?:nummer :)([0-9]+)(?:\\.)");publicstaticStringmagischeZahl(String eingabe){System.out.println(eingabe);Matcher m = WHATEVER.matcher(eingabe);if(!m.find())returnnull;return m.group(1);}publicstaticvoidmain(String[] args){System.out.println(magischeZahl("hey, was geht nummer : 13533. Test"));}}