黑马程序员技术交流社区
标题:
字符截取的问题
[打印本页]
作者:
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 编辑
public class Test {
public static void main(String[] args) {
String s = getString(800);
System.out.println(s);
}
private static String getString(int i) {
String s = String.valueOf(i);
if(s.length() == 3){
s = "0".concat(s);
}
return s;
}
}
复制代码
贴上一段代码,不完整而且写得很烂,但可以给个思路。
就是先将整数转为字符串,然后判断长度,最后在字符串前面进行拼接。
刚才没看明白LZ的意思,贴上新的代码。
public class Test {
public static String getString(int i) {
StringBuffer sb = new StringBuffer();
sb.append("0000");
sb.append(i);
return sb.toString().substring(sb.length() - 4, sb.length());
}
public static void main(String[] args) {
String s = getString(800);
System.out.println(s);
}
}
复制代码
作者:
肖亚光
时间:
2013-9-25 13:58
本帖最后由 肖亚光 于 2013-9-25 14:03 编辑
public static String getString(int i){
String srcString = ""+i;
while(srcString.length()<4){
srcString = "0"+srcString;
}
return srcString;
}
如果是需要最后的4个字符,只要返回
return srcString.substring(srcString.length()-4, srcString.length());
复制代码
作者:
暮雨
时间:
2013-9-25 14:13
本帖最后由 暮雨 于 2013-9-25 14:14 编辑
随手写了一个,希望能帮到你。
public class Test1{
public static void main(String[] args)
{
System.out.println(getString(2));
}
public static String getString(int i){
StringBuffer sb = new StringBuffer();
sb.append("0000");
sb.append(i);
String str = sb.toString();
str = str.substring(str.length()-4,str.length());
return str;
}
}
复制代码
作者:
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 编辑
我觉得可以很容易实现,推荐看下毕老师关于正则表达式的视频。
<P> String str = "9993";
str = str.replaceAll("(<A href="file://\\d">\\d</A>+)", "000$$$$1");
str = str.replaceAll("0*(<A href="file://\\d{4">\\d{4</A>})", "$$$$1");
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