如何截取字符串中的非零字段? 形如“00000000200” “000000002234” “00000444”这种形式的字符串 我如何做才能截取字符串中的非零字符,取得“200” “2234” “444”这样的有效数值呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Integer.parseInt(“00000000200”)就可以的 String ss="0000200"; while(ss.startsWith("0")){ ss=ss.substring(1,ss.length()); } System.out.println(ss); public class Test{ public static void main(String[] args) { String[] strs={"00000000200", "000000002234", "00000444"}; String regex="^0+"; for(int i=0;i<strs.length;i++){ String result=strs[i].replaceAll(regex,""); System.out.println(result+" "); } } }F:\java>java Test2002234444 System.out.println(Integer.parseInt("000000025235235")); public class Test{ public static void main(String[] args) { String[] strs={"00000000200", "000000002234", "00000444","23424"}; for(int i=0;i<strs.length;i++){ String result=strs[i].replaceAll("^0+",""); System.out.println(result); } }} 刚看了毛毛兄的代码!感觉比我的好~试想速度也比我的快~但测试了下,发现不是我想的那样? 有知道或者我那块写错了给我指出来~或者两个写法效率不同· 我还是着把我的程序和毛毛兄调换 结果一样~ String[] strs={"00000000200", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444"}; long time1 = System.currentTimeMillis(); String regex="^0+"; for(int i=0;i <strs.length;i++){ String result=strs[i].replaceAll(regex,""); System.out.println(result+" "); } long time2 = System.currentTimeMillis(); for(int i=0;i <strs.length;i++){ while(strs[i].startsWith("0")){ strs[i]=strs[i].substring(1,strs[i].length()); } System.out.println(strs[i]); } long time3 = System.currentTimeMillis(); System.out.println("time1:"+(time2-time1)); System.out.println("time2:"+(time3-time2));结果:200 220034 444 220034 444 220034 444 220034 444 220034 444 220034 444 220034 444 220034 444 220034 444 220034 444 220034 444 220034 444 200220034444220034444220034444220034444220034444220034444220034444220034444220034444220034444220034444220034444time1:31time2:0我的多次为0 郁闷 有时不为0 是什么问题? str.substring(str.split("[^0]+")[0].length(),str.length()) 那就再加个判断:if(str2.matches("[0]+")) return "0";else return str.substring(str.split("[^0]+")[0].length(),str.length());要不就用二楼所说的。 二楼的有个问题,可能大数字不能转成int型的,3楼的满足要求。 java大文件传输 JApplet JLable作用域问题 FileWriter写入数据到文本文件最前面怎么做,也就是追加到最前面 为什么我的jdbc直接访问SQL server,只能访问系统表(在线等) JFrame上面的JTable更新出问题, JFrame.setContentPanel()问题 一直没试验过,今天测试了发现原来不行 怎么样再程序里面清除Applet类载入程序高速缓存 eclipse里为什么不能加图片文件 关于编码方式.(unicode...)请大家指点或给个思路. 我的眼泪在流 这段js代码的含义 Thread的问题start() 和run()的区别
String ss="0000200";
while(ss.startsWith("0")){
ss=ss.substring(1,ss.length());
}
System.out.println(ss);
public static void main(String[] args) {
String[] strs={"00000000200", "000000002234", "00000444"};
String regex="^0+";
for(int i=0;i<strs.length;i++){
String result=strs[i].replaceAll(regex,"");
System.out.println(result+" ");
}
}
}
F:\java>java Test
200
2234
444
public static void main(String[] args) {
String[] strs={"00000000200", "000000002234", "00000444","23424"};
for(int i=0;i<strs.length;i++){
String result=strs[i].replaceAll("^0+","");
System.out.println(result);
}
}
}
但测试了下,发现不是我想的那样?
有知道或者我那块写错了
给我指出来~或者两个写法效率不同·
我还是着把我的程序和毛毛兄调换
结果一样~ String[] strs={"00000000200", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444", "00000000220034", "00000444"};
long time1 = System.currentTimeMillis();
String regex="^0+";
for(int i=0;i <strs.length;i++){
String result=strs[i].replaceAll(regex,"");
System.out.println(result+" ");
}
long time2 = System.currentTimeMillis();
for(int i=0;i <strs.length;i++){
while(strs[i].startsWith("0")){
strs[i]=strs[i].substring(1,strs[i].length());
}
System.out.println(strs[i]);
}
long time3 = System.currentTimeMillis();
System.out.println("time1:"+(time2-time1));
System.out.println("time2:"+(time3-time2));结果:
200
220034
444
220034
444
220034
444
220034
444
220034
444
220034
444
220034
444
220034
444
220034
444
220034
444
220034
444
220034
444
200
220034
444
220034
444
220034
444
220034
444
220034
444
220034
444
220034
444
220034
444
220034
444
220034
444
220034
444
220034
444
time1:31
time2:0
我的多次为0 郁闷
有时不为0 是什么问题?
str.substring(str.split("[^0]+")[0].length(),str.length())
那就再加个判断:if(str2.matches("[0]+"))
return "0";
else
return str.substring(str.split("[^0]+")[0].length(),str.length());
要不就用二楼所说的。