形如“00000000200” “000000002234” “00000444”这种形式的字符串 我如何做才能截取字符串中的非零字符,取得“200” “2234” “444”这样的有效数值呢?

解决方案 »

  1.   

    Integer.parseInt(“00000000200”)就可以的
      

  2.   


         String ss="0000200";
         while(ss.startsWith("0")){
         ss=ss.substring(1,ss.length());
         }
         System.out.println(ss);
      

  3.   

    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 Test
    200
    2234
    444
      

  4.   

    System.out.println(Integer.parseInt("000000025235235"));
      

  5.   

    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);
            }
        }
    }
      

  6.   

      刚看了毛毛兄的代码!感觉比我的好~试想速度也比我的快~
    但测试了下,发现不是我想的那样?
      有知道或者我那块写错了
    给我指出来~或者两个写法效率不同·
     我还是着把我的程序和毛毛兄调换
     结果一样~  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 是什么问题?
      

  7.   


    str.substring(str.split("[^0]+")[0].length(),str.length())
      

  8.   


    那就再加个判断:if(str2.matches("[0]+")) 
        return "0";
    else
        return str.substring(str.split("[^0]+")[0].length(),str.length());
    要不就用二楼所说的。
      

  9.   

    二楼的有个问题,可能大数字不能转成int型的,3楼的满足要求。