站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题中英文混合字符截取方法

中英文混合字符截取方法

摘要: 中英文混合字符截取方法

</td> </tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td height="86" align="center" valign="top"> </td> </tr> <tr> <td height="20">java实现中英文混合字符截取方法(按字节长度截取,中文字符是占两个字节的,英文字符是占一个字节的)

<table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td>public class Tools {

public Tools() {
}

/**

* 字符串按字节截取

* @param str 原字符

* @param len 截取长度

* @return String

* @author kinglong

* @since 2006.07.20

*/

public static String splitString(String str, int len) {

return splitString(str, len, "...");

}

/**

* 字符串按字节截取

* @param str 原字符

* @param len 截取长度

* @param elide 省略符

* @return String

* @author kinglong

* @since 2006.07.20

*/

public static String splitString(String str,int len,String elide) {

if (str == null) {

return "";

}

byte[] strByte = str.getBytes();

int strLen = strByte.length;

int elideLen = (elide.trim().length() == 0) ? 0 : elide.getBytes().length;

if (len >= strLen || len < 1) {

return str;

}

if (len - elideLen > 0) {

len = len - elideLen;

}

int count = 0;

for (int i = 0; i < len; i++) {

int value = (int) strByte[i];

if (value < 0) {

count++;

}

}

if (count % 2 != 0) {

len = (len == 1) ? len + 1 : len - 1;

}

return new String(strByte, 0, len) + elide.trim();

}

public static void main(String args[]){
String s="I am a student.我是一个学生";
System.out.println(Tools.splitString(s,24));
System.out.println(Tools.splitString(s,23));
System.out.println(Tools.splitString(s,25));
System.out.println(Tools.splitString(s,26));
}

}

运行结果:


C:\test>java Tools
I am a student.我是一...
I am a student.我是...
I am a student.我是一...
I am a student.我是一个...

</td> </tr> </table>
PS:这个方法可能不是最优化的,但基本能解决中英文混合字符截取问题了,如果你有更好的方法,可以发邮件(kinglong@gmail.com)给我! </td> </tr> </table>

function TempSave(ElementID) { CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value); CommentsPersistDiv.save("CommentXMLStore"); } function Restore(ElementID) { CommentsPersistDiv.load("CommentXMLStore"); document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent"); }

</td> </tr> <tr>


↑返回目录
前一篇: 一个不断旋转显示六个面的正方体
后一篇: 一种常用的权限控制算法