问: 在处理后,每行显示相同长度的文字,但是里面有数字和符号,这样就显得每一行对不齐,有什么办法让他们对齐呢?是这样的,我按照10个字符来换行显示,可是有数字和文字混在一起,这样换行的显示宽度就不一样,可否理解?我希望是一样的
晴天,21℃~28℃,
北风3级,相对湿度最
大60%,最小35%
,火灾危险信号为红色
答:
public
class
Test
...
{
public static void main(String[] args) ...{
String str = "晴间少云,20℃~29℃,东北风2-3级,相对湿度最大70%,最小38%,火灾危险信号为红色";
System.out.println(separate(str, 20));
}
public static String separate(String input, int len) ...{
StringBuffer sb = new StringBuffer(len);
int count = 0;
char[] chars = input.toCharArray();
for (int i = 0; i < chars.length; i++) ...{
char c = chars[i];
sb.append(c);
count = (c <= 0xff) ? count + 1 : count + 2;
if (count >= len) ...{
sb.append("<br/>");
count = 0;
}
}
return sb.toString();
}
}
public static void main(String[] args) ...{
String str = "晴间少云,20℃~29℃,东北风2-3级,相对湿度最大70%,最小38%,火灾危险信号为红色";
System.out.println(separate(str, 20));
}
public static String separate(String input, int len) ...{
StringBuffer sb = new StringBuffer(len);
int count = 0;
char[] chars = input.toCharArray();
for (int i = 0; i < chars.length; i++) ...{
char c = chars[i];
sb.append(c);
count = (c <= 0xff) ? count + 1 : count + 2;
if (count >= len) ...{
sb.append("<br/>");
count = 0;
}
}
return sb.toString();
}
}
近似地把 0xff 以上的字符看作是全角字符(实际上不是这样的,因为 0xff 以上还
有很多其他语言的字符也是半角的,不过基本上用不到)。