2

我有字符串“08,09,10,11”,我想要“8,9,10,11”,即去掉所有前导零。

正则表达式

"08,09,10,11".replaceAll("^0+(?!$)", "")

接近但给了我 '8,09,10,11' (即 9 上的零没有被剥离。

有人有我可以用来做我需要的正则表达式吗?

4

3 回答 3

5

这将起作用:

str.replaceAll("^0+", "")

于 2013-05-21T20:37:04.533 回答
4

我认为这会起作用:

str.replaceAll("(?<!\d)0+(?=\d+)", "");

这里有一些测试: http: //fiddle.re/rp57

于 2012-12-27T01:23:54.290 回答
2

这里提到了两种方法之间的区别:

str.replaceAll("^0+", "")

"0001000" ----> "1000"
"0000000" ----> ""


replaceAll("^0+(?!$)", "")

"0001000" ----> "1000"
"0000000" ----> "0"

(?!$) 是一个所谓的负前瞻,寻找字符串的结尾,不要删除字符串结尾后面的“0”。因此,如果前导零也是字符串的最后一个字符,它不会被删除

于 2013-10-23T08:57:58.070 回答