import java.io.IOException;
import java.io.UnsupportedEncodingException;
public class Test {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
/*
* 按照字節數截取一個字符串,“abc你好” 如果截取到半個中文,捨棄,比如 截取4個字節 abc。截取 5個字節abc你
* 定義功能實現
* 字符串-->字節數組 編碼
* 字節數組-->字符串。 解碼。
* GBK2312編碼的一箇中文是兩個字節,而且兩個字節的最高位都是1,也就是說是一個負數
* 思路:
* 1, 中文兩個字節都是負數
* 2,判斷截取的最後一個字節是否是負數
* 如果不是,直接截取
* 如果是,就往回判斷前一個是否是負數,並記錄負數的個數,如果連續的負數有奇數個,捨棄最後一個字節
* 如果連續的負數是偶數個,不捨棄
*/
String str="abc你好";
byte[] buf= str.getBytes("GBK");
for(int x=0;x<buf.length;x++)
{
String temp= cutStringByCount(str,x+1);
System.out.println(temp);
}
}
private static String cutStringByCount(String str, int len) throws IOException {
byte[] buf= str.getBytes("GBK");
int count=0;
for(int x=len-1;x>=0;x--)
{
if(buf[x]<0){
count++;
}else {
break;
}
}
if(count%2==0)
{
return new String(buf,0,len);
}
else{
return new String(buf,0,len-1);
}
}
}
按照字節數截取一個字符串,“abc你好” 如果截取到半個中文,捨棄,比如 截取4個字節 abc。截取 5個字節abc你
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.