一个比较难的问题,字符串处理

yifuzhiming 2007-10-16 10:46:06
我一串天天气预报,我在处理后,每行显示相同长度的文字,但是里面有数字和符号,这样就显得每一行对不齐,有什么办法让他们对齐呢

String htmlCode="晴间少云,20℃~29℃,东北风2-3级,相对湿度最大70%,最小38%,火灾危险信号为红色";

int len=htmlCode.length();

for(int i=0;i<len;i++){
if ((i%8==0)&&(i!=0)){
str.append(htmlCode.charAt(i)+"</br>");
}else{
str.append(htmlCode.charAt(i));
}
...全文
189 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
南南北北 2007-10-17
  • 打赏
  • 举报
回复
学习。
  • 打赏
  • 举报
回复
因为这里面有全角字符和半角字符,并不能这样添加,在 Java 中全角和半角字符都算作一个字。
参考以下的代码。如果要在页面上对齐的话,字体最好使用宋体。

如果要避免在行首出现标点符号的话,可以自行改进一下。

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();
}
}
LuckilyYu 2007-10-17
  • 打赏
  • 举报
回复
不知道这个方法可不可以,因为中文字是全角的,而LZ句子中的符号是半角的,所以会有宽度不同,
我的方法是把半角的符号都替换成全角的符号
johnsoncr 2007-10-17
  • 打赏
  • 举报
回复
用System.out.printf()或System.out.format()
yifuzhiming 2007-10-17
  • 打赏
  • 举报
回复
是这样的,我按照10个字符来换行显示,可是有数字和文字混在一起,这样换行的显示宽度就不一样,可否理解?我希望是一样的

晴天,21℃~28℃,
北风3级,相对湿度最
大60%,最小35%
,火灾危险信号为红色
  • 打赏
  • 举报
回复
对于汉字来说,可以近似地把 0xff 以下的字符都看作是半角字符,也就是 \u00FF。
近似地把 0xff 以上的字符看作是全角字符(实际上不是这样的,因为 0xff 以上还
有很多其他语言的字符也是半角的,不过基本上用不到)。
yifuzhiming 2007-10-17
  • 打赏
  • 举报
回复
问题已解决,能不能告诉我一段代码是什么意思啊,虚心学习c <= 0xff
yifuzhiming 2007-10-17
  • 打赏
  • 举报
回复
谢谢大狭相助,我试试
javahelper 2007-10-16
  • 打赏
  • 举报
回复
没有看明白,lz什么意思啊。

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧