Wie zum extrahieren von mehreren ganzen zahlen aus einem String in Java?
Habe ich eine Reihe von Zeichenfolge, wie "(123, 234; 345, 456) (567, 788; 899, 900)"
.
Wie extrahieren Sie die zahlen in ein array wie aArray[0]=123, aArray=[234], ....aArray[8]=900;
Danke
- Ich glaube nicht, es ist schön, downvote die Frage, wie dieser. Der eine fragte, wer wohl der neue ist auf die Programmierung und meint es ist ein Magischer Weg, dies zu tun.
- Herzlich willkommen auf Stack Overflow! Wir ermutigen Sie dazu, Forschung Ihre Fragen. Wenn Sie noch versucht etwas, was es schon, fügen Sie ihn bitte auf die Frage - wenn nicht, forschen und versuchen, Ihre Frage zunächst, und dann kommen Sie zurück.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist wahrscheinlich übermäßig kompliziert, aber Heu...
Das erste, was wir tun müssen, ist entfernen Sie alle den Mist den wir nicht brauchen...
Weiter, wir müssen trennen die einzelnen Elemente der string in eine besser handhabbare form
Nächsten, die wir brauchen, um zu konvertieren jede
String
Wert auf eineint
Dann haben wir die Werte anzeigen...
Haben Sie fast sicher gesehen, das Zitat:
Aber reguläre Ausdrücke sind wirklich Ihr Freund für diese Art der Sache.
Ausgänge:
Strategie: Finden eine oder mehrere zahlen zusammen, die durch einen regulären Ausdruck, um zu einer Liste Hinzugefügt werden.
Code:
Ausgabe:
List<List<Tupel<Integer, Integer>>>
maybee? Dennoch, ich würde für die regex-Lösung.Iterieren über jedes Zeichen und speichern von Rufnummern in einem temporären array zu, bis Sie ein Zeichen(wie
,
,;
) speichern Sie dann die Daten aus dem temporären array in das array und dann leeren, die temporären array für den nächsten Gebrauch.Da deine zahlen sind getrennt durch einen bestimmten Satz von Zeichen, können Sie einen Blick auf die
.split(String regex)
Methode.Da es eine Reihe von verschiedenen delimeters in Ihrem string, Sie können durch Sie gehen, und ersetzen Sie alle nicht-Ziffer-Zeichen mit
spaces
. Dann können Siesplit("\\s")
zu split die Zeichenfolge in ein array von Teilstrings mit zahlen. Und schließlich wandeln Sie in zahlen.Der einfachste Ansatz ist die Verwendung der Kombination von
String.indexOf()
(oder so ähnlich) undNumberFormat.parse(ParsePosition)
Methoden. Ein Algorithmus wäre folgender:Zeichen und geben einen Wert zurück
Zur gleichen Zeit, der string hat eine bestimmte Struktur, also IMHO einige parser wäre der bessere Ansatz ist, wie es wäre, prüfen Sie auch die Korrektheit des formats (wenn es nötig ist, weiß ich nicht). Es gibt eine Menge von Werkzeugen für die Generierung von Java-code aus einer Beschreibung einer Grammatik (wie ANTLR, etc.). Aber es könnte auch sein, komplexe Lösung für den Fall.
Diese Methode extrahieren von Ganzzahlen aus einer angegebenen Zeichenfolge. Zudem verarbeitet Sie strings, wo andere Zeichen werden verwendet, um separate zahlen, nicht nur die, in deinem Beispiel:
Hinweis: Da der interne
for
loop-Positionen nach einer ganzen Zahl und außenfor
Schleife erhöht diei
variable bei der Suche für die nächste ganze Zahl, Algorithmus, benötigen Sie mindestens ein Zeichen zu trennen, die ganzen zahlen, aber ich denke, das ist wünschenswert. Zum Beispiel die"-23-12"
Quelle produzieren, die zahlen[ -23, 12 ]
und NICHT[ -23, -12 ]
(aber"-23 -12"
produzieren [ -23, -12 ] wie erwartet).Ich denke, man kann regulären Ausdruck verwenden um dein Ergebnis zu bekommen. So etwas vielleicht:
Noch einen anderen Weg. Könnte gut sein, wenn u wollen, um weniger code zu schreiben, kann schlecht sein, wenn u kann nicht hinzufügen von libs zu Ihrem Projekt
BIN sicher, dass die gurus können es sauber weiter.
Obigen code wird ein string zurückgegeben werden "0123023403540456"
und es wird [123, 234, 345, 456]