黑马程序员技术交流社区

标题: 字符截取的问题 [打印本页]

作者: 0和1,编程世界    时间: 2013-9-25 13:38
标题: 字符截取的问题
本帖最后由 杨增坤 于 2013-9-25 20:23 编辑

怎样将一个小于或者等于4位数的整数变成一个字符串0000  如 2变成 0002     12变成  0012  9998就保持9998:我写了一半,卡住 了。

public class StringBufferSubString {

public String getString(int i){
  StringBuffer sb = new StringBuffer();
  sb.append("0000");
  sb.append(i);
  return sb.toString().  //我不知道怎么从后面开始截,你无论传什么进来我只从后面开始截4个就满足要求了,但是我想不到怎么截了。
}

public static void main(String[] args) {
  
}

}
各位大侠帮忙解决一下,谢谢!
作者: 黑色海    时间: 2013-9-25 13:48
string类有两个方法叫padleft,padright,有两个参数,一个是设定的字符串长度,一个是设定用来补充的字符。

作者: 落木萧萧    时间: 2013-9-25 13:50
本帖最后由 落木萧萧 于 2013-9-25 13:59 编辑
  1. public class Test {
  2.         public static void main(String[] args) {
  3.                 String s = getString(800);
  4.                 System.out.println(s);
  5.         }

  6.         private static String getString(int i) {
  7.                 String s = String.valueOf(i);
  8.                 if(s.length() == 3){
  9.                         s = "0".concat(s);
  10.                 }
  11.                 return s;
  12.         }
  13. }
复制代码
贴上一段代码,不完整而且写得很烂,但可以给个思路。
就是先将整数转为字符串,然后判断长度,最后在字符串前面进行拼接。
刚才没看明白LZ的意思,贴上新的代码。
  1. public class Test {

  2.         public static String getString(int i) {
  3.                 StringBuffer sb = new StringBuffer();
  4.                 sb.append("0000");
  5.                 sb.append(i);
  6.                 return sb.toString().substring(sb.length() - 4, sb.length());
  7.         }

  8.         public static void main(String[] args) {
  9.                 String s = getString(800);
  10.                 System.out.println(s);
  11.         }
  12. }
复制代码

作者: 肖亚光    时间: 2013-9-25 13:58
本帖最后由 肖亚光 于 2013-9-25 14:03 编辑
  1.         public static String getString(int i){
  2.                 String srcString = ""+i;
  3.                 while(srcString.length()<4){
  4.                         srcString = "0"+srcString;
  5.                 }
  6.                 return srcString;
  7.         }



  8. 如果是需要最后的4个字符,只要返回
  9. return srcString.substring(srcString.length()-4, srcString.length());
复制代码

作者: 暮雨    时间: 2013-9-25 14:13
本帖最后由 暮雨 于 2013-9-25 14:14 编辑

随手写了一个,希望能帮到你。
  1. public class Test1{
  2.         
  3.         public static void main(String[] args)
  4.         {
  5.                 System.out.println(getString(2));
  6.         }

  7.         public static String getString(int i){
  8.           StringBuffer sb = new StringBuffer();
  9.           sb.append("0000");
  10.           sb.append(i);
  11.           String str = sb.toString();
  12.           str = str.substring(str.length()-4,str.length());
  13.           return str;
  14.         }
  15. }
复制代码

作者: yting_xmei1129    时间: 2013-9-25 14:16
楼主说的就是一个取字串的问题,请看下面代码,刚刚敲的--->

public class StringBufferSubString {
        public static void main(String[] args) {
                System.out.println(getString(1));
                System.out.println(getString(12));
                System.out.println(getString(123));
                System.out.println(getString(1234));
                System.out.println(getString(12345));
        }

        public static String getString(int i) {
                StringBuffer sb = new StringBuffer();
                sb.append("0000");
                sb.append(i);
                return sb.substring(sb.length()-4, sb.length()); // 我不知道怎么从后面开始截,你无论传什么进来我只从后面开始截4个就满足要求了,但是我想不到怎么截了。
        }
}
}

运行结果--->
0001
0012
0123
1234
2345

希望可以帮到楼主...

The you smile until forever .....................
作者: 早知道    时间: 2013-9-25 15:08
本帖最后由 早知道 于 2013-9-25 15:15 编辑

我觉得可以很容易实现,推荐看下毕老师关于正则表达式的视频。

  1. <P>  String str = "9993";
  2.   str = str.replaceAll("(<A href="file://\\d">\\d</A>+)", "000$$$$1");
  3.   str = str.replaceAll("0*(<A href="file://\\d{4">\\d{4</A>})", "$$$$1");
  4.   System.out.println(str);</P>
复制代码
这样就可以实现了,正则用来操作你这个需求正合适。

作者: 依旧    时间: 2013-9-25 15:13
使用的正则,希望能帮到你。
public class RegAdd {
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
   System.out.println(Add("2"));
   System.out.println(Add("98"));
   System.out.println(Add("789"));
   System.out.println(Add("1234"));
}
//使用正则完成的,貌似还可以优化
public static String Add(String str){
  if(str.length()==1){
   str=str.replaceAll("(\\d+)", "000$1");//如果字符串长度为1则补三个零
  }else if(str.length()==2){
   str=str.replaceAll("(\\d+)", "00$1");//如果字符串长度为2则补二个零
  }else if(str.length()==3){
   str=str.replaceAll("(\\d+)", "0$1");//如果字符串长度为3则补一个零
  }else{
   return str;                         //否则直接返回字符串
  }
  return str;
}
}


作者: 黄炳期    时间: 2013-9-25 16:02
如果问题已经解决,请及时修改主题分类为“已解决”。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2