判断字符串包含几个0?

gzy_0429 2009-10-14 04:19:54




402000
402010
402020
402070
402080
402090


如何判断字符串末尾包含几个0
...全文
887 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
tfsict2008 2009-10-14
  • 打赏
  • 举报
回复
int getTheNum(String str) {
str = str.replaceAll("[1-9]", "1");
return str.length()-str.lastIndexOf("1") - 1;
}
lsd123 2009-10-14
  • 打赏
  • 举报
回复
.
zhuzeitou 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 rosewj 的回复:]
ls的能解释下你的正则吗?我不是很懂
[/Quote]

额,是说我吗?不好意思,前面网络断了……
"^.*?0*$"
上面这个正则很容易理解的对吧,任意起始,采用懒惰,然后结尾都是0
然后括号么,怎么说,可以认为是分组或者怎么说来着

就拿这个为例
对于"402000"字符串,"^.*?(0*)$"中$1就是后面那个"000"
如果是"^(.*?)(0*)$",那么$1就是"402",$2就是"000"
上次那个去除前后逗号的例子
字符串为",,,a,bc,,",正则是"^(,*)(.*?)(,*)$",那么$1就是",,,",$2是"a,bc",$3是",,"

啊啊,表达能力好差,本来也是从别人的代码里看来的,凭自己理解的,是不是完全正确也不是很清楚哦……
qq366727679 2009-10-14
  • 打赏
  • 举报
回复
string a="402000";
char[] b=a.toCharArray();
int sum=0;
for(int i=a.length()-1,i>=0,i--)
{
if(b[i]=='0')
{sum++;}
else
break;
}
System.out.println(sum);
猿敲月下码 2009-10-14
  • 打赏
  • 举报
回复
我也来个,旁门左道:
	public static int howManyZeros(String s) {
if (s == null || s.equals("")) {
return 0;
}
String temp = new StringBuilder(s).reverse().toString();
temp = temp.replaceFirst("[0]*", "");
return s.length() - temp.length();
}
amdgaming 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 qq366727679 的回复:]
引用 24 楼 zhelong1983 的回复:
String str = "402000";
int n = str.length()-str.replaceAll("0*$","").length();
System.out.println(n)


“0*$”啥意思,能解析下吗
[/Quote]

0出现 一次 或多次,然后结束 $代表 结尾
qq366727679 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 zhelong1983 的回复:]
String str = "402000";
int n = str.length()-str.replaceAll("0*$","").length();
System.out.println(n)
[/Quote]

“0*$”啥意思,能解析下吗
zhelong1983 2009-10-14
  • 打赏
  • 举报
回复
有人贴了?算我没贴
zhelong1983 2009-10-14
  • 打赏
  • 举报
回复
String str = "402000";
int n = str.length()-str.replaceAll("0*$","").length();
System.out.println(n)
老张-AI 2009-10-14
  • 打赏
  • 举报
回复
呵呵 都还不错
gukuitian 2009-10-14
  • 打赏
  • 举报
回复

String s = "402000";
System.out.println(s.length()-s.replaceAll("0*$", "").length());
阿_布 2009-10-14
  • 打赏
  • 举报
回复

String str = "402000";
int n = str.length()-str.replaceAll("0+$","").length();
System.out.println(n);
gzy_0429 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 littlemonster 的回复:]
挺好呀~~

引用 1 楼 zhoupuyue 的回复:
String str = "402000";
int n = str.length()-str.replaceAll("0","").length();

[/Quote]

但读取出来的是4个0呢
littlemonster 2009-10-14
  • 打赏
  • 举报
回复
挺好呀~~

[Quote=引用 1 楼 zhoupuyue 的回复:]
String str = "402000";
int n = str.length()-str.replaceAll("0","").length();
[/Quote]
bunrise 2009-10-14
  • 打赏
  • 举报
回复
String st = "23800000";
int sum = 0;
String[] c = st.split("");
for (int i = c.length - 1; i > 0; i--) {
if (!"0".equals(c[i])) {
break;
} else {
sum++;
}
}
System.out.println(sum);
}
rosewj 2009-10-14
  • 打赏
  • 举报
回复
ls的能解释下你的正则吗?我不是很懂
zhuzeitou 2009-10-14
  • 打赏
  • 举报
回复
48是'0'的
gzy_0429 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 rosewj 的回复:]
Java codepublicstaticvoid main(String[] args) {// TODO Auto-generated method stub String a="43000021300";int j=0;for(int i=a.length()-1;i>=0;i--) {char c= a.charAt(i);if((int) c!=48) {
Syst¡­
[/Quote]

请问48代表什么?
gzy_0429 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhoupuyue 的回复:]
String str = "402000";
int n = str.length()-str.replaceAll("0","").length();
[/Quote]

这个方法读到是4个0 应该是末尾开始读到不是0就可以了应该是3
rosewj 2009-10-14
  • 打赏
  • 举报
回复
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "43000021300";
int j = 0;
for(int i=a.length()-1;i>=0;i--) {
char c = a.charAt(i);
if((int) c != 48) {
System.out.println(j);
break;
}
j++;
}

}
加载更多回复(12)

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧