hallo,
ich habe gerade zum Entfernen führender Nullen in einem String den Code replaceFirst("0*", "")
vor mir liegen
funktioniert:
public class Test2 {
public static void main(String[] args) throws Exception {
System.out.println("00004300".replaceFirst("0*", ""));
System.out.println("4300".replaceFirst("0*", ""));
}
}
replaceFirst heißt zwar nicht ‚am Anfang des Strings‘, aber durch das 0*, was ich normalerweise für sich nicht mag,
wird auch bei fehlenden Nullen am Anfang des Strings dort ein Leerstring fürs Pattern gefunden/ gematcht,
die Nullen weiter hinten sind nicht in Gefahr
"0*"
ist einfacher als "^0+"
a la
java - How to remove leading zeros from numeric text? - Stack Overflow
, ob nun mit replaceAll() oder replaceFirst()
ich werde mich vor Entscheidungen zur Wahl dazwischen drücken, indem ich Pattern lieber ganz einspare,
(bei jedem replace neu kompiliert oder aufwendig statisch abgelegt),
und eine Hilfsmethode schreibe, die nach Suchchar am Anfang schaut, und einmal subString() durchführt, wenn nötig
aber allgemein gesprochen, ist die Variante mit 0* sicher, könnte man das in wichtigen Code bedenkenlos einbauen?
wie ist generell festgelegt ob ein 0*
selbst von „0000“-String kein, ein oder alle Nullen nimmt?
bei RegEx <tag>.*</tag>
werden glaube ich evtl. auch innere Tags gerne mal übersprungen, zuviel gemacht
ich setze lieber nur zweifelsfreie Pattern ein, a0*b
ist in „a0000b“ bisher noch immer fündig geworden,
<tag>[^<]*</tag>
oder so macht auch weniger Sorgen
ist sicher irgendwo genau nachzulesen wie Greedy & Co. funktionieren,
aber falls das schon wer gemacht und eine schnelle Kurzversion zum Besten geben kann, bitte