您的位置:首页 > 职场人生

按字节截取带有中文字符的字符串

2016-11-28 20:27 253 查看
题目: 编写一个函数,要求输入一个字符串和字节数,输出该字节个数的子字符串。

思路: 在Java编程语言中,String自带的substring()方法可以按字符个数截取指定长度的字符串。而题目要求按照字节进行截取,因为此时存在中文(占两个字节),所以不能直接使用substring()方法进行截取。主要的步骤是:

1. 判断是否为中文

2. 非中文则字符直接加一,中文则需再次细分:

(1). 字节数没有将中文截断,字符数加一,且跳过该中文第二个字节;

(2). 字节数将中文截断,字符数不变(只会发生在最后一位)

代码如下:

public String cutStringByByte(String string, int bytes) {
// 获取字符串的编码
private byte[] buffer = string.getBytes("GBK");
private int count = 0; // 字符个数
for (int i = 0; i < bytes; i++) {
if (buffer[i] < 0 && i + 1 < bytes) {
count++;  // 中文且没有被截断,字符数加一
i++;  // 跳过该中文
} else if (buffer[i] > 0) {
count++; // 非中文,字符数加一
}
}
return string.substring(0, count);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 面试 字符编码
相关文章推荐