14
回答
一个java正则表达式的问题
华为云4核8G,高性能云服务器,免费试用   

有如下12位字符串

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

举报
唯一
发帖于8年前 14回/321阅
共有14个答案 最后回答: 8年前

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文档

引用来自“Innate Solitary”的帖子

引用来自“红薯”的帖子

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

呵呵,有点怪。

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

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

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

引用来自“JavaGG”的帖子

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

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

引用来自“红薯”的帖子

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

呵呵,有点怪。

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

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

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

顶部