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

来源:互联网 发布:电视网络机顶盒推荐 编辑:程序博客网 时间:2024/05/18 00:42

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

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

 

原创粉丝点击