Ich habe ein Java- String
Objekt. Ich muss nur Ziffern daraus extrahieren. Ich werde ein Beispiel geben:
"123-456-789"
Ich will "123456789"
Gibt es eine Bibliotheksfunktion, die nur Ziffern extrahiert?
Danke für die Antworten. Bevor ich diese versuche, muss ich wissen, ob ich zusätzliche Bibliotheken installieren muss.
str = str.replaceAll("[^\\.0123456789]","");
(?!\\.)
Hier ist eine ausführlichere Lösung. Weniger elegant, aber wahrscheinlich schneller:
Testcode:
Ausgabe:
Übrigens: Ich habe Character.isDigit (ch) nicht verwendet, da es viele andere Zeichen außer 0 - 9 akzeptiert.
quelle
StringBuilder
Konstruktor (z. B.input.length()
) eine Größe bereitstellen, um sicherzustellen, dass er nicht neu zugewiesen werden muss. Sie müssen hier kein verlangenString
;CharSequence
genügt. Sie können die Zuordnung von auchStringBuilder
von der Sammlung nichtstelliger Zahlen trennen, indem Sie eine separate Funktion schreiben, die eineCharSequence
als Eingabe und eineAppendable
Instanz als Ausgabespeicher akzeptiert .quelle
Verwenden von Google Guava:
AKTUALISIEREN:
Die Verwendung von Precomputed CharMatcher kann die Leistung weiter verbessern
quelle
Charmatcher.DIGIT
vordefiniert.Dadurch werden die Dezimalstellen ignoriert.
Beispiel: Wenn Sie einen Eingang haben, wird
445.3kg
der Ausgang sein445.3
.quelle
Verwenden von Google Guava:
CharMatcher ist steckbar und sehr interessant zu bedienen. Sie können beispielsweise Folgendes tun:
Ausgabe == 123-456-789
quelle
Verwenden Sie reguläre Ausdrücke, um Ihren Anforderungen zu entsprechen.
quelle
Ich habe mich vom Code Sean Patrick Floyd inspirieren lassen und ihn wenig umgeschrieben, um maximale Leistung zu erzielen.
Ich mache einen Leistungstest für einen sehr langen String mit minimalen Zahlen und das Ergebnis ist:
Übrigens hängt es davon ab, wie lang diese Zeichenfolge ist. Mit String, der nur 6 Zahlen enthält, ist Guave 50% langsamer und Regexp 1 mal langsamer
quelle
Ausgabe: 11
quelle
Sie können verwenden
str.replaceAll("[^0-9]", "");
quelle
Ich habe den Code für die Telefonnummern +9 (987) 124124 festgelegt.
Unicode-Zeichen belegen 4 Bytes.
quelle
Code:
quelle
quelle