有个11位的字符串,我先判断后3位是否等0,如果等0--删除.再继续判断该字符串,如果后3位还等0,继续删除...再判断后2位.......直到不等0...比如01000000000..............谢谢啊!!!

解决方案 »

  1.   

    你可以用substring来截取就是了
      

  2.   

    是这样么?
    if(a.substring(6, 9).equals("000")){
       //但是怎么删除这3个0哦?
    }
    ------------------------
    一定要这样反复判断么?没有效率更好的方法么?
      

  3.   

    if(a.substring(6, 9).equals("000")){
    a=a.substring(0,6);
    }
      

  4.   

    谢谢回答哦.
    不过.有个问题哦.比如9位的010010000
    String a = "010010000";
    if(a.substring(6,9).equals("000")){
      a = a.substring(0,6);
    }
    if(a.substring(4,6).equals("00")){
      a = a.substring(0,4);
    }
    if(a.substring(2,4).equals("00")){
      a = a.substring(0,2);
    }
    我4-6的判断就应该终止了.......怎么处理才好?
      

  5.   

    public class TestString {
        public static void main(String args[]){
            String a = "010010000";
            String[] s = new String[]{"00","00","000"} ;
            for(int i=3;i>0;i--){
                if(a.substring(a.length()-i,a.length()).equals(s[i-1])){
                    a = a.substring(0,a.length()-i);
                }
            }            
            System.out.println(a);
        }
    }
      

  6.   

    class test
    {
        public static void main(String[]srga)
        {
            String str = "010010000";
            int length = 0;
            
            while(true)
            {
                length = str.length();
                if(str.substring(length-3,length).equals("000"))
                {
                    str = str.substring(0,length-3);
                }
                else
                {
                    break;
                }
            }
            System.out.println(str);
           
        }
    }
      

  7.   

    写成这样了:
    class bbb 
    {
    public static void main(String[]srga)
        {
            String str = "011000000";
        
            while(true)
            {
                int length = str.length();
                if(str.substring(length-3,length).equals("000"))
                {
                    str = str.substring(0,length-3);
                }
                else
                {
                    break;
                }
    length = str.length();
    if(str.substring(length-2,length).equals("00"))
                {
                    str = str.substring(0,length-2);
                }
                else
                {
                    break;
                }
    length = str.length();
    if(str.substring(length-2,length).equals("00"))
                {
                    str = str.substring(0,length-2);
                }
                else
                {
                    break;
                }
            }
            System.out.println(str);
    }
    --------------------
    这个倒是好用,但是有没有更好的方法啊?
    public class TestString {
        public static void main(String args[]){
            String a = "010010000";
            String[] s = new String[]{"00","00","000"} ;
            for(int i=3;i>0;i--){
                if(a.substring(a.length()-i,a.length()).equals(s[i-1])){
                    a = a.substring(0,a.length()-i);
                }
            }            
            System.out.println(a);
        }
    }
    -----------------------------
    想来想去,觉得这样不行.谢谢回复.感谢!
      

  8.   

    public static void main(String[] args) {
            String s = "0100000000";
            System.out.println(getTrimZero(s));
        }
        
        public static String getTrimZero(String s) {
            if (s.matches("^0+$")) {
                return "";
            }
            return s.replaceAll("^(\\d+?)(000)+$", "$1");
        }
      

  9.   

    String s = "0100000000";
    String s2 = s.replaceAll("(000)*$","");
    System.out.println(s2);
      

  10.   

    public class TestString{
    public static void main(String[] args){
    String str="01001";
    //尾数为0个数
    int count=0;
    //删除0的个数
    int delCount=0;

    for(int i=str.length()-1;i>=0;i--){
    if(str.charAt(i)=='0')
    count++;
    else
    break;
    }

    delCount=count/3*3+((count+1)/3-(count)/3)*2;
    // System.out.println(delCount);

    System.out.print(str.substring(0,str.length()-delCount));
    }
    }
      

  11.   

    class Test
    {public static void main(String args[])
    {
     String a = "010000100";
         if(a.substring(6,9).equals("000")){
            a = a.substring(0,6);
            if(a.substring(4,6).equals("00")){
               a = a.substring(0,4);
               if(a.substring(2,4).equals("00")){
                  a = a.substring(0,2);
          }} }
        System.out.println(a);
    }
    }
      

  12.   

    小弟有个思路
    用一个可变字符串 存放结果
    不是从后向前3位截取么??肯定有余数(可能是0)
    可以先处理余数,剩下的不就是3的倍数了么??
    然后在把子串从前向后取 该怎么办怎么办  
    不知道怎么样 
    public class Str
    {
        public Str()
        {
        }    public static void main(String[] args)
        {
            String s = "010010000";
            StringBuffer ss = new StringBuffer();
            if (s.length() % 3 == 2)
            {
                if (!"00".equals(s.substring(0, 2)))
                {
                    ss.append(s.substring(0, 2));
                }
                String y = s.substring(2, s.length());
                for (int i = 0; i < s.length() / 3; i++)
                {
                    if (!"000".equals(y.substring(3*i, 3*i+3)))
                    {
                        ss.append(y.substring(3*i, 3*i+3));
                    }
                }        }
            else if (s.length() % 3 == 1)
            {
                if (!"0".equals(s.charAt(0)))
                {
                    ss.append(s.charAt(0));
                }
                String y = s.substring(1, s.length());
                for (int i = 0; i < s.length() / 3; i++)
                {
                    if (!"000".equals(y.substring(3*i, 3*i+3)))
                    {
                        ss.append(y.substring(3*i, 3*i+3));
                    }
                }
            }
                else
                {
                    for (int i = 0; i <s.length() / 3; i++)
                    {
                        if (!"000".equals(s.substring(3*i, 3*i+3)))
                        {
                            ss.append(s.substring(3*i, 3*i+3));
                        }
                    }            }
            System.out.println(ss);
        }
    }稍微复杂了一点   由于本人基础暴差   所以写的繁琐了一点
    那个for循环应该可以提个方法出来
      

  13.   

    用一个while()循环,一直循环直到长度小于3或者找到不是3位或者两位都.每次都取最后三位嘛,如果取到的不是三进而取两个0的呀
    str;
    boolean flag = true;
    while( str.length >= 3 && flag)
    {
          if( "000".equeal(str.substring(str.length-3,str.length)) )
            str=str.substring(0,str.length-3);
          else if ("00".equeal(str.substring(str.length-2,str.length)) )
          {
              str=str.substring(0,str.length-2); 
              flag = false;      
          }
          else
          {
                  flag = false;
           }
    }
    没有经过测试的,在取最后三位或者两们的地方可能有点问题,道理应该是说到了
      

  14.   

    我有一个方法,但是有点问题不知道该怎么解决。
    为什么第一个for循环不会执行?
    import java.util.*;public class Solution
    {
    public static void main(String[] args)
    {
    String s="01000000000";
    char[] c1=s.toCharArray();
    int count=0;
    for(int i=c1.length;i!=-1;i++)
    {
    if(c1[i]==(char)0) {
    count++;
    System.out.println("count++");//用于测试
    }
    else
    break;
    }
    char[] c2=new char[c1.length-count];
    System.arraycopy(c1,0,c2,0,c2.length);
    //for(int i=0;i<c2.length;i++)
    //System.out.print(c2[i]);
    }
    }
      

  15.   

    另一种方法:
    public class TestString{
    public static void main(String[] args){
    String str="01001000000";
    //尾数为0个数
    int count=0;

    for(int i=str.length()-1;i>=0;i--){
    if(str.charAt(i)=='0')
    count++;
    else
    break;
    }

    if(count%3==1)
    System.out.print(str.substring(0,str.length()-count+1));
    else
    System.out.print(str.substring(0,str.length()-count));
    }
    }
      

  16.   

    public class Test {
    public String cutString(String paramStr){
    int index = -1;
    int length = paramStr.length();
    for(int i = length - 1; i >= 0; i--){
    if(paramStr.charAt(i) != '0'){
    index = i;
    break;
    }
    }
    if(index == -1){
    return "";
    }
    return paramStr.substring(0,length - (length - 1 - index) / 3 * 3);
    }

    public static void main(String[] args){
    Test test = new Test();
    System.out.println(test.cutString("00000001000"));
    }
    }
      

  17.   

    public String cutString(String paramStr){
    int index = -1;
    int length = paramStr.length();
    for(int i = length - 1; i >= 0; i--){
    if(paramStr.charAt(i) != '0'){
    index = i;
    break;
    }
    }
    if(index == -1) return "";
    return paramStr.substring(0,length - (length - 1 - index) / 3 * 3);
    }