2013年5月9日 星期四

字串處理,如何得知在substring時,是否拆到中文字?



使用length()取string長度,會遇到中文字長度只有回傳1,所以如果是要算真正的長度,則需要將字串轉為byte陣列,但在做substring時,可能會截到中文字,故可先作byte是否為中文的判斷後,再做位置調整。主要是利用isChineseCharacter類別中所寫中文內碼範圍判斷,範例如下:

public class getByteTest {
    /**
     * 測試中文拆解,isChineseCharacter可判斷是否為中文字
     * @param args
     * @throws Throwable
     */
    public static void main(String[] args) throws Throwable{
        // TODO Auto-generated method stub
        String aaa="ABC小妹妹test123";
        byte[] dataByte = null;
         try {
             dataByte = aaa.getBytes("Big5");
         } catch (Throwable e) {
             System.out.println("傳入字串轉成Big5編碼的byte array 失敗 ");
         }
         String tmp = new String(dataByte, 0, dataByte.length, "Big5");
         boolean isChinese;
         for(int i=0; i<tmp.length();i++){
             isChinese=isChineseCharacter(tmp.charAt(i));
             System.out.println(tmp.charAt(i)+" : "+isChinese);
        }
    }
    public static boolean isChineseCharacter (char c){  
        return (19968<=(int)c)&&((int)c<=171941);
    }
}

沒有留言:

張貼留言