急急急,各位大神求解

erdaduzi 2013-10-24 05:24:00
编写函数,从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表)
例如:从“HM程序员”中截取2个字节是“HM”,截取4个则是“HM程”,截取3个字节也要是"HM"而不要出现半个中文
...全文
262 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
teemai 2013-10-24
  • 打赏
  • 举报
回复

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);
	}
}

夏凉风 2013-10-24
  • 打赏
  • 举报
回复
引用 1 楼 a470577391 的回复:
java按字节截取字符串
这个进去就是代码,按照你自己需求来
咖啡加糖_ 2013-10-24
  • 打赏
  • 举报
回复
引用 2 楼 erdaduzi 的回复:
求代码、、、、、、、、、、、、、、、
点击二楼的连接进去就是代码 话说这个是个 面试题 吧
erdaduzi 2013-10-24
  • 打赏
  • 举报
回复
求代码、、、、、、、、、、、、、、、
白开水MD5 2013-10-24
  • 打赏
  • 举报
回复

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧