首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

JAVA格式化字符串,该怎么处理

2012-02-19 
JAVA格式化字符串Stringstr05b101279acd0A 怎么格式化为:05,b10,127,9ac,d0A请好心人帮助,在线等~[解

JAVA格式化字符串
String   str   =   "05b101279acd0A ";  

怎么格式化为:  

05,b10,127,9ac,d0A  

请好心人帮助,在线等~

[解决办法]
楼主,你是怎么格式化的了,依据是什么啊?

位数固定的就用substring
[解决办法]
String str = "05b101279acd0A ";

str值是变值,是数字和字母的组合,长度也不固定.
[解决办法]
因为我需要的是三位append一个逗号
========================
昏。这你也好意思问。。。。

直接用string进行操作
[解决办法]
printf

[解决办法]
你可以先把字符串倒过来,然后每三位分开一次,执行完成之后,在把字符串转过来。
不知道我的理解是不是您说的东西。
[解决办法]
DecimalFormat decimalFormat = new DecimalFormat( "#,###,### ");
decimalFormat.format(i);

[解决办法]
/**
*
*/
String getFormatString(String src, int n, String app)
{
if(src==null || n <1 || app==null || app.equals( " "))
return src;
String temp = src;
if(temp.length() <= n)
return temp;
return getFormatString(temp.substring(0,temp.length()-n),n,app)+app+temp.substring(temp.length()-n,temp.length());
}

System.out.println(getFormatString( "123s123%jahfd129 ",3, ", "));
[解决办法]
给你写了个最容易看明白的方法,就是效率低些
String str = "05b101279acd0A ";
String rs = " ";
String ss = " ";
for (int i = str.length(); i > 0; i--) {
if(i%3==0){
rs = rs + str.substring(i - 1, i)+ ", ";
}else{
rs = rs + str.substring(i - 1, i);
}
}
str= " ";
for (int i = rs.length(); i > 0; i--) {
str = str + rs.substring(i - 1, i);
}

System.out.println(str);
[解决办法]
public class StringTest {
public static void main(String[] args) {
String a = "fa12d010sf0asd23fa56sd8f+das ";
int length = a.length();
String d = " ";
int lastIndex = length;
while (length > 0) {
length = length - 3;
if (length > 0) {
System.out.println(length);
d += a.substring(length, lastIndex) + ", ";
lastIndex -= 3;

} else {
d += a.substring(0,lastIndex);
}

}
System.out.println(d);

}
}

[解决办法]
来个短的:
str = str.substring(0, str.length() % 3 == 0 ? 3 : str.length() % 3) + str.substring(str.length() % 3 == 0 ? 3 : str.length() % 3, str.length()).replaceAll( "(.{3}) ", ",$1 ");
------
效率不高,纯属娱乐
[解决办法]
public static void main(String[] args) {
String a = "fa12d010sf0asd23fa56sd8f+das ";
int length = a.length();
String d = " ";
int k = length % 3;
d += a.substring(0, k);
length -= k;
int i = k;
while (i < length) {
d += ", " + a.substring(i, i + 3);


i += 3;
}
System.out.println(d);

}
[解决办法]
public StringBuffer formatStr(String src){
if (src == null && src.equals( " ")){
return null;
}
StringBuffer sbuf = new StringBuffer(src.length());
int begin = 0 , end = 0;
end = src.length()%3;
while(end <= src.length()){
sbuf.append(src.substring(begin, end)).append( ", ");
begin = end;
end = begin + 3;
}
if (sbuf.lastIndexOf( ", ") == sbuf.length()-1){
sbuf.deleteCharAt(sbuf.length()-1);
}
return sbuf;
}
和上面那位想的一样
[解决办法]
public class FormatString {

public static String formatString(String oldString){

StringBuffer newString = new StringBuffer(oldString);

int length = oldString.length();

for(int i = length -3; i > 0 ; i -= 3){
newString.insert(i , ", ");
}

return newString.toString();
}

public static void main(String[] args){

String oldString = "1m1k235k621 ";

System.out.println(FormatString.formatString(oldString));

}

}
[解决办法]
顶上去
大家想法都不错啊
[解决办法]
public class Format{
public static void main(String[] args){
String a = "fa12d010sf0asd23fa56sd8f+das ";
StringBuffer sb=new StringBuffer( " ");
int len=a.length(),
times=len/3+1,
j=len%3,
count=0;
if(j!=0){
sb.append(a.substring(count,j));
count+=j;
sb.append( ", ");
for(int i=0;i <times-1;i++){
sb.append(a.substring(count,count+3));
count+=3;
if(i!=times-2)sb.append( ", ");
}
}else
for(int i=0;i <times;i++){
sb.append(a.substring(count,count+3));
count+=3;
if(i!=times-2)sb.append( ", ");
}
System.out.println(sb.toString());
}
}
[解决办法]
StringBuffer str = "05b101279acd0A ";
for(int i=3;i <str.length();i+=3)
str.insert(i, ', ');
[解决办法]
风清扬的方法好,不过顺序反了,而且你忘了每次插入 ', '之后下一个插入位置改变了:

StringBuffer str = new StringBuffer( "05b101279acd0A ");
int firstPos = str.length()%3;
for(int i=firstPos; i <str.length(); i+=4) {
if(i> 0) {
str.insert(i, ', ');
}
}
[解决办法]
public static void main(String[] args) {

StringBuffer str = new StringBuffer( "05b101279acd0A ");

for (int i = str.length(); i > 0; i--) {
if (i % 3 == 0) {
str.insert(i - 1, ", ");
}
}

System.out.println(str.toString());
}
[解决办法]
StringBuffer str = new StringBuffer( "05b101279acd0A ");
System.out.println(new StringBuffer(str.reverse().toString().replaceAll( "\\w{3} ", "$0, ")).reverse().toString());
------解决方案--------------------


还是楼上的精辟阿
用字符串操作,是很明了,但是太浪费source了
[解决办法]
学习了,谢谢
[解决办法]
都比我强多了,以后好好学习了
[解决办法]
汗,挺简单的事,为啥要搞这么复杂

热点排行