/**
*
* @param src
* 传入字符串
* @param len
* 截取字节数
* @param encoding
* 编码
* @return 返回截取后的字符串
*/
public static String getSubStrings(String src, int len, String encoding) {
// 判断是否为空
if (src == null||len < 1)
return null;
// 字符串对象
StringBuffer buf = new StringBuffer();
// 累计个数
int count = 0;
// 遍历字符
for (int i = 0; i < src.length(); i++) {
// 截取每个字符
String tmp = src.substring(i, i + 1);
// 追加字符串
buf.append(tmp);
//
byte[] tmpB;
try {
// 将字符串转成字节数组
tmpB = tmp.getBytes(encoding);
// 统计字节个数
count += tmpB.length;
// 如果大于传入的个数
if (count >= len) {
break; // 停止循环
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return buf.toString();
}
测试
public static void main(String[] args) {
//注意:gbk编码中文(一个汉字占两个字节)
System.out.println(getSubStrings("我ABC汉DEF", 4,"gbk"));
//注意:utf-8编码中文(一个汉字占三个字节)
System.out.println(getSubStrings("我ABC汉DEF", 4,"utf-8"));
// System.out.println(getSubStrings("我Q爱中华ABC我爱中国DWE", 6,"utf-8"));
}
结果: