Regex is the best tool for the job; what it should be depends on the problem specification. The following removes leading zeroes, but leaves one if necessary (i.e. it wouldn’t just turn "0"
to a blank string).
s.replaceFirst("^0+(?!$)", "")
The ^
anchor will make sure that the 0+
being matched is at the beginning of the input. The (?!$)
negative lookahead ensures that not the entire string will be matched.
Test harness:
String[] in = {
"01234", // "[1234]"
"0001234a", // "[1234a]"
"101234", // "[101234]"
"000002829839", // "[2829839]"
"0", // "[0]"
"0000000", // "[0]"
"0000009", // "[9]"
"000000z", // "[z]"
"000000.z", // "[.z]"
};
for (String s : in) {
System.out.println("[" + s.replaceFirst("^0+(?!$)", "") + "]");
}
See also
- regular-expressions.info
- repetitions, lookarounds, and anchors
String.replaceFirst(String regex)