一个java正则表达式的问题

唯一 发布于 2010/04/07 10:50
阅读 321
收藏 0

有如下12位字符串

"100100000000","100101000000"类似这样的,我想从右往左把所有的“0”都去掉,到一个不为0的数为止,这个咋写啊,先谢过了,用java,replace写的

加载中
1
mallon
mallon

public class Main {

    public static void main(String[] args) {
        System.out.println(replace("100100000000"));
        System.out.println(replace("100101000000"));
    }

    public static String replace(String str) {
        return str.replaceAll("(.*[^0])0*", "$1");
    }
}

用到了正则表达式中的“捕获”概念,参见java.util.regex.Pattern的JDK文档

1
mallon
mallon

引用来自“Innate Solitary”的帖子

引用来自“红薯”的帖子

"100100000000".replace('0',' ').trim().replace(' ','0');

呵呵,有点怪。

如果开始也有0,就不行啦,这样自应该可以

"000001020300040005500005000000".replaceAll("0+$", "")

测试了"" "0" "1"这三个极端情况,确实这个更好!

1
mallon
mallon

引用来自“JavaGG”的帖子

直接用subString吧,,用replace还慢呢,str=str.subString(0,str.lastIndexOf("1"));搞定

不含有"1"的字符串就会失败,还是正则表达式保险

0
红薯
红薯

"100100000000".replace('0',' ').trim().replace(' ','0');

呵呵,有点怪。

0
唯一
唯一

这么快就回了,谢啦

0
赵开锦
赵开锦

先进啊,这就是他山之石可以攻玉啊!

0
Turbidsoul
Turbidsoul

引用来自“红薯”的帖子

"100100000000".replace('0',' ').trim().replace(' ','0');

呵呵,有点怪。

如果开始也有0,就不行啦,这样自应该可以

"000001020300040005500005000000".replaceAll("0+$", "")

0
李剑
李剑

用循环 /10 可以么?

0
许恒彪
许恒彪

replaceAll("^0+|0+$", "")

0
红薯
红薯

很惭愧,玩java那么多年,就是很抵触正则表达式,非常不直观,光看一个表达式很难直观的看出它是起什么作用的。

返回顶部
顶部