Ich habe Fragen zum Präfixieren von Nullen hier in SO gesehen. Aber nicht umgekehrt!
Könnt ihr mir vorschlagen, wie man die führenden Nullen im alphanumerischen Text entfernt? Gibt es integrierte APIs oder muss ich eine Methode schreiben, um die führenden Nullen zu trimmen?
Beispiel:
01234 converts to 1234
0001234a converts to 1234a
001234-a converts to 1234-a
101234 remains as 101234
2509398 remains as 2509398
123z remains as 123z
000002829839 converts to 2829839
java
string
alphanumeric
jai
quelle
quelle
.replaceFirst("^0+(?!$)".toRegex(), "")
Sie können die StringUtils- Klasse von Apache Commons Lang folgendermaßen verwenden :
quelle
Wie wäre es mit dem Regex-Weg:
Die
^
Anker am Anfang der Zeichenfolge (ich gehe aus dem Kontext davon aus, dass Ihre Zeichenfolgen hier nicht mehrzeilig sind, andernfalls müssen Sie möglicherweise\A
eher nach dem Beginn der Eingabe als nach dem Beginn der Zeile suchen ). Das0*
bedeutet null oder mehr0
Zeichen (Sie können auch verwenden0+
). DasreplaceFirst
ersetzt einfach alle diese0
Zeichen am Anfang durch nichts.Und wenn Ihre Definition von führenden Nullen wie bei Vadzim nicht darin besteht,
"0"
(oder"000"
ähnliche Zeichenfolgen) in eine leere Zeichenfolge umzuwandeln (eine ausreichend vernünftige Erwartung), setzen Sie sie bei Bedarf einfach zurück:quelle
Ein klarer Weg ohne die Notwendigkeit von regExp und externen Bibliotheken.
quelle
Passend zum thelost Apache Commons Antwort: mit Guave-Bibliotheken (Google-Allzweck-Java - Utility - Bibliothek , die ich argumentieren würde jetzt auf dem Classpath eines nicht-triviale Java - Projekt sein sollte), würde dies verwenden CharMatcher :
quelle
Wenn Sie Kotlin verwenden Dies ist der einzige Code, den Sie benötigen:
quelle
Sie könnten einfach tun:
String s = Integer.valueOf("0001007").toString();
quelle
Verwenden Sie die Apache Commons-
StringUtils
Klasse:quelle
Benutze das:
quelle
Verwenden von Regexp mit Gruppen:
quelle
Die Verwendung von Regex, wie einige der Antworten vermuten lassen, ist ein guter Weg, dies zu tun. Wenn Sie Regex nicht verwenden möchten, können Sie diesen Code verwenden:
quelle
String
dazu führen, dass stattdessen MagicCrafter-Ansätze verwendet werden.Ich denke, dass es so einfach ist, das zu tun. Sie können die Zeichenfolge einfach von Anfang an durchlaufen und Nullen entfernen, bis Sie ein Zeichen ungleich Null gefunden haben.
quelle
Wenn Sie (wie ich) alle führenden Nullen aus jedem "Wort" in einer Zeichenfolge entfernen müssen, können Sie die Antwort von @polygenelubricants wie folgt ändern:
was in ... endet:
quelle
Ohne Verwendung
Regex
odersubstring()
Funktion,String
die ineffizient sein wird -quelle
Sie könnten ersetzen ,
"^0*(.*)"
um"$1"
mit regexquelle
quelle
Wenn Sie keinen regulären Ausdruck oder keine externe Bibliothek verwenden möchten. Sie können mit "für" tun:
quelle
String
während dieser Schleife erzeugt ... wenn es 1000 gibt0
...Ich habe einige Benchmark-Tests durchgeführt und festgestellt, dass der schnellste Weg (bei weitem) diese Lösung ist:
Besonders reguläre Ausdrücke sind in einer langen Iteration sehr langsam. (Ich musste den schnellsten Weg für einen Batchjob herausfinden.)
quelle
Und was ist mit der Suche nach dem ersten Zeichen ungleich Null?
Diese Regex findet die erste Ziffer zwischen 1 und 9, gefolgt von einer beliebigen Anzahl von Ziffern. Für "00012345" wird also "12345" zurückgegeben . Es kann leicht für alphanumerische Zeichenfolgen angepasst werden.
quelle