老問題,給定字符串按字節長度截取子串
public class CutString { public static void main(String[] args) throws Throwable { //begin 起始字節位置(索引值), length 截取字節長度 int begin = 1, length = 10; String s = "?a①㈡⑶⒋Ⅴⅵdf龘s哦的a【《df才朤??╋"; byte[] bt = s.getBytes("GBK");//判斷起始位置的字節歸屬 //如果起始字節不是字符首字節,則起始位置前移一位 if (bt[begin] < 0) { int count = 0; for (int i = 0; i <= begin; ++i) { if (bt[i] < 0) { count++; } } if (count % 2 == 0) { //位置前移 begin--; } } String result = new String(bt,begin,length,"GBK"); //System.out.println(result); char last = result.charAt(result.length()-1); //如果最后一位是占雙字節的字符 //截取它的一半就會出現"?",對應Unicode碼為0xFFFD if (last == 0xFFFD) { result = result.substring(0,result.length()-1); } System.out.println(result); }
}</pre>
本文由用戶 灬猜想灬 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!