java中如何從字串中刪選中文字元(GBK編碼和UTF-8編碼)
阿新 • • 發佈:2019-02-18
1.GBK編碼中文佔兩個位元組,英文佔一個位元組。下面進行一個小的程式的測試:
輸出為:797$$$-74$$$-2$$$98$$$99$$$100$$$101$$$<span style="font-size:24px;">import java.io.UnsupportedEncodingException; public class TestMain{ public static void main(String[] args) throws UnsupportedEncodingException { String str = "a二bcde"; byte[] by = str.getBytes("GBK"); System.out.print(by.length); for(byte b: by) System.out.print(b+"$$$"); } }</span>
這裡我們注意上面字串中的中文字元被轉換為兩個byte,輸出是都為負數
所以我們可以用byte[i] < 0判斷是否為中文字元,如果是GBK編碼那麼,只要找到第一個byte[i]小於零的位置,連續連個位置即為中文字元。
2.UTF-8編碼中文佔三個位元組,英文佔兩個位元組。下面進行一小段程式的測試:
輸出為:897$$$-26$$$-120$$$-111$$$98$$$99$$$100$$$101$$$故我們可以從第一個byte[i] < 0的位置連續取3個位元組,然後轉化為字串即是我們想要的中文字元import java.io.UnsupportedEncodingException; public class TestMain{ public static void main(String[] args) throws UnsupportedEncodingException { String str = "a我bcde"; byte[] by = str.getBytes("UTF-8"); System.out.print(by.length); for(byte b: by) System.out.print(b+"$$$"); } }