请教一个关于字符串截取的问题,谢谢大家了。

seansunboy 2007-12-11 02:50:40
有一个例如 String a="000108" 的字符串,它的位数不是固定的,想要的结果是把前几个为0的字符全部去掉,结果为a="108"。用什么算法才能实现?
...全文
261 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
huhuan_dlut 2007-12-13
  • 打赏
  • 举报
回复
我觉得12楼的方法最好
Machqr 2007-12-13
  • 打赏
  • 举报
回复
同意2楼的观点。正则最简单。而且好懂
lysh718 2007-12-13
  • 打赏
  • 举报
回复
12楼和2楼的方法都很好,正则表达式功能真的好强大
zhbking 2007-12-13
  • 打赏
  • 举报
回复
推荐2楼的.
seansunboy 2007-12-12
  • 打赏
  • 举报
回复
感谢大家!
聪头 2007-12-12
  • 打赏
  • 举报
回复
while(true){
if(str.startsWith("0")){
str = str.substring(1);
}
else{
break;
}
}
迷眼流金 2007-12-12
  • 打赏
  • 举报
回复
呵呵,如果是全是0-9组成,可以考虑转成数字再转字符串, String.valueOf(new Integer("000108"))之类,但要注意一下Integer的范围,别超出了被截断
不然最好还是用正则表达式吧,楼主可以看看这方面的介绍
"000108" .replaceAll("^0+", "");
shan1119 2007-12-12
  • 打赏
  • 举报
回复
new Integer("000108").toString()
另类清晨 2007-12-12
  • 打赏
  • 举报
回复
一楼的哥们,顶你下.
hareluya0705 2007-12-12
  • 打赏
  • 举报
回复
来学习!!!
seansunboy 2007-12-11
  • 打赏
  • 举报
回复
感谢楼上指导。
Ramy_1224 2007-12-11
  • 打赏
  • 举报
回复
public class TextDemo
{
public static void main(String agrs[])
{
String s="00010208";
int n=0,m=0;
for(int i=0;i<s.length();i++)//从开始第一个不等于0的索引
{
if(s.charAt(i)!='0')
{
n=i;
break;
}
}
for(int j=s.length()-1;j>=0;j--)//从最后第一个不等于0的索引
{
if(s.charAt(j)!='0')
{
m=j;
break;
}
}
String str=s.substring(n,m+1);
System.out.println(str);

}

}
比较容易懂的方法!!
seansunboy 2007-12-11
  • 打赏
  • 举报
回复
非常感谢了,正则表达式果然历害。

但用第二种方法,有些问题如下:

class Test
{
public static void main(String[] args)
{
//String b = "00015800";
//System.out.println(b.replaceAll("^0+", ""));

String a = "000108";
int leng = a.length();
int j = 0 ;
try{
for(int i = 0 ; i < leng ; i ++){
if(Integer.valueOf(a.valueOf(i)).intValue() > 0)
{
j= i ;
}
System.out.println(a.substring(j,leng - 1 - j));
}
}catch(Exception e){
}
}
}
//这样取出的结果为 如果不加try的话报 StringIndexOutOfBoundsException异常
//00010
//001
//0

//而不是108.
rainwind_2 2007-12-11
  • 打赏
  • 举报
回复
开始感受正则表达式的强大。。。
birdking2006 2007-12-11
  • 打赏
  • 举报
回复
唉,正则难学啊!
醉面韦陀 2007-12-11
  • 打赏
  • 举报
回复
同意楼上的说法!
qzqzq 2007-12-11
  • 打赏
  • 举报
回复
学习!学习!
数据兔 2007-12-11
  • 打赏
  • 举报
回复
用正则表达式,二楼的答案是最简答的

String str = "000108";
String rtnStr = str.replaceAll("^0+", "");
cwjieNo5 2007-12-11
  • 打赏
  • 举报
回复

String a = "000108";
int leng = a.length();
int j = 0 ;
for(int i = 0 ; i < leng ; i ++){

if(integer.valueOf(a.valueOf(i)).intValue() > 0)
{
j= i ;
}
Syetem.out.println(a.substring(j,leng - 1 - j));



不知道正确不,边上没有编译工具,大概就是从前面字符开始,依次和0比较,如果大于0的话,记下它的位置,然后用substring截取~
angues1980 2007-12-11
  • 打赏
  • 举报
回复
什么算法也不用,正则就可以做到了

String a = "015800";
System.out.println(a.replaceAll("^0+", ""));

62,623

社区成员

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

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