由于接到一任务,大致是这样子的:一个弹页面里面要显示一段文字(多国字符),弹出页面的宽度是定死的。客户不希望文字长度过长时,下面出现水平的拉条。这就关系到一个自动换行的问题。
由于中文,日文,韩文等一般占2个字节,英文一般占1个字节,所以要换行,首先要计算长度。只有在字节长度相同的情况下换行,同时又要注意不能将中文字拆开了,否则就会是乱码了。
经过一番努力,这个问题终于搞定了。具体函数如下
/*判断是否双字节字符*/
public boolean isDoublebyteWord(String str){
byte[] b;
int temp;
for (int i = 0; i < str.length(); i++) {
b = str.substring(i, i + 1).getBytes();
temp = b[0];
if (temp > 0) {
return false;
}
}
return true;
}
/*给字符串添加换行符,其中linepos是需要换行的位置,按字节算的*/
public String lineStr(String s,int linePos){
String new_str="";
int total_len=0;
int brNum=0;
for(int i=1;i<=s.length();i++){
if(isDoublebyteWord(s.substring(i-1,i))){
total_len+=2;
if(total_len>=(linePos*(brNum+1))){
new_str+=s.substring(i-1,i)+"<br/>";
brNum++;
}else{
new_str+=s.substring(i-1,i);
}
}else{
total_len+=1;
if(total_len>=(linePos*(brNum+1))){
new_str+=s.substring(i-1,i)+"<br/>";
brNum++;
}else{
new_str+=s.substring(i-1,i);
}
}
}
return new_str;
}