首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

截取包孕中、英文的字符串

2012-11-19 
截取包含中、英文的字符串// 用字节数组方法截取包含中、英文的字符串public static String splitStrByByte(

截取包含中、英文的字符串

// 用字节数组方法截取包含中、英文的字符串public static String splitStrByByte(String a, int length) {byte strs[] = a.getBytes();long count = 0;for (int i = 0; i < length; i++) {if (strs[i] < 0) {count++;}}// 如果有不完整的汉字,肯定是最后一个字符有问题int getLeng = count % 2 == 0 ? length : length - 1;return new String(strs, 0, getLeng);}// 用字符数组方法截取包含中、英文的字符串public static String splitStrByChar(String a, int length) {char strs[] = a.toCharArray();int charCount = 0;int temp = 0;for (char c : strs) {temp = temp + String.valueOf(c).getBytes().length;if (temp > length) {break;}charCount++;}return new String(strs, 0, charCount); // 注意这里:char数组,后面是字符数,而非byte数组的字节数}public static String splitStrByString(String src, int length) {byte [] strs = src.getBytes();String result = new String(strs, 0, length);if (!src.startsWith(result)) {result = new String(strs, 0, length - 1);}return result;}

?

?

以上3种方法都能达到按字节数截取字符串的目的

本机测试循环1万次,可以发现:

splitStrByByte耗时:94ms

splitStrByChar耗时:265ms ~ 281ms

splitStrByString耗时:141ms

可见第一种效率高点.

热点排行