今天从朋友那得知了一个问题,根据指定的字节位数截取字符串。
刚拿到这个问题之后,有一点思路,就是普通字符占一个字节,像数字和字母,但是中文字符一般占两个字节或者三个字节。比如,在utf8的编码格式下,中文占三个字节,在gbk模式下中文占两个字节,这就需要先来辨别一下当前的字符集编码格式。
当然,有了前边这些思路,之后就是需要判断当前字节到底是中文还是数字或者字母,因为作者目前还是一个菜鸟,所以百度上去查了一下,原来中文的自己ASCII码是负数,英文和数字的ASCII码是正数,那这就好办了。
废话不多说,代码如下,希望对大家有所帮助,当然有错误和可以有优化的地方,还望大佬们指正。
勿喷~~~
public class SubStringByByteNumUtil {
/*public static void main(String[] args) {
String s = "我ew爱你";
subString(s, 6);
}*/
private static void subString(String str, int num) {
if (str.isEmpty() || 0 == str.length()) {
return;
}
if (num > str.getBytes().length) {
num = str.getBytes().length;
}
int count = 0;
byte[] arr = str.getBytes();
for