将中英文混合的字符串换行

王朝other·作者佚名  2006-03-06
窄屏简体版  字體: |||超大  

由于接到一任务,大致是这样子的:一个弹页面里面要显示一段文字(多国字符),弹出页面的宽度是定死的。客户不希望文字长度过长时,下面出现水平的拉条。这就关系到一个自动换行的问题。

由于中文,日文,韩文等一般占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;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航