日期:2014-05-17  浏览次数:20771 次

急急急,各位大神求解
 编写函数,从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表)
例如:从“HM程序员”中截取2个字节是“HM”,截取4个则是“HM程”,截取3个字节也要是"HM"而不要出现半个中文

------解决方案--------------------
java按字节截取字符串
------解决方案--------------------


引用:
求代码、、、、、、、、、、、、、、、


点击二楼的连接进去就是代码

话说这个是个 面试题 吧
------解决方案--------------------
引用:
java按字节截取字符串
这个进去就是代码,按照你自己需求来
------解决方案--------------------

public class SplitString {

public static String bSubstring(String s, int length) throws Exception {

byte[] bytes = s.getBytes("Unicode");
int n = 0; // 表示当前的字节数
int i = 2; // 要截取的字节数,从第3个字节开始
for (; i < bytes.length && n < length; i++) {

// 奇数位置,如3、5、7等,为UCS2编码中两个字节的第二个字节

if (i % 2 == 1) {
n++; // 在UCS2第二个字节时n加1
} else {
// 当UCS2编码的第一个字节不等于0时,该UCS2字符为汉字,一个汉字算两个字节
if (bytes[i] != 0) {
n++;
}
}
}

// 如果i为奇数时,处理成偶数

if (i % 2 == 1) {
// 该UCS2字符是汉字时,去掉这个截一半的汉字
if (bytes[i - 1] != 0)
i = i - 1;
// 该UCS2字符是字母或数字,则保留该字符
else
i = i + 1;
}

return new String(bytes, 0, i, "Unicode");

}

public static void main(String[] args) throws Exception {
String s = "HM程序员";
String ss = SplitString.bSubstring(s, 3);
System.out.println(ss);
}
}