開發中經常遇到,字符串過長,無法完全顯示的問題
這時候就需要截取我們所需要的長度,后面顯示省略號或其他字符。
由于中文字符占兩個字節,而英文字符占用一個字節,所以,單純地判斷字符數,效果往往不盡如人意
下面的方法通過判斷字符的類型來進行截取,效果還算可以:)
如果大家有其他的解決方法歡迎貼出來,共同學習:)
**********************************************************************
private String str;
private int counterOfDoubleByte;
private byte b[];
/**
* 設置需要被限制長度的字符串
* @param str 需要被限制長度的字符串
*/
public void setLimitLengthString(String str){
? this.str = str;
}
/**
* @param len 需要顯示的長度(<font color="red">注意:長度是以byte為單位的,一個漢字是2個byte</font>)
* @param symbol 用于表示省略的信息的字符,如“...”,“>>>”等。
* @return 返回處理后的字符串
*/
public String getLimitLengthString(int len, String symbol) throws UnsupportedEncodingException {
? counterOfDoubleByte = 0;
? b = str.getBytes("GBK");
? if(b.length <= len)
??? return str;
? for(int i = 0; i < len; i++){
??? if(b[i] < 0)
????? counterOfDoubleByte++;
? }
? if(counterOfDoubleByte % 2 == 0)
??? return new String(b, 0, len, "GBK") + symbol;
? else
??? return new String(b, 0, len - 1, "GBK") + symbol;
}
本文轉貼自網友:focus2004 的文章