使用的是网上找到的一个方法,有缺陷,自己做了改进:

\u6d4b\u8bd5\u6570\u5b57\u4e22\u5931123,

123\u6d4b\u8bd5\u6570\u5b57\u4e22\u5931,

\u6d4b\u8bd5123\u6570\u5b57\u4e22\u5931

转化结果:

测试数字丢失123

123测试数字丢失

测试123数字丢失

public String convert(String utfString){

StringBuilder sb = new StringBuilder();

int i = -1;

int pos = 0;

if (utfString.contains("\\u")){

while((i=utfString.indexOf("\\u", pos)) != -1){

sb.append(utfString.substring(pos, i));

if(i+5 < utfString.length()){

pos = i+6;

sb.append((char)Integer.parseInt(utfString.substring(i+2, i+6), 16));

}

}

if(pos

sb.append(utfString.substring(pos, utfString.length()));

Log.e("sb.toString()", "sb.toString()=" + sb.toString());

return sb.toString();

}

else

return utfString;

}

之前的方法少了这两句:

if(pos

sb.append(utfString.substring(pos, utfString.length())); 结果当汉字+数字混合时,如果数字在整个字符串结尾那么数字就会被漏掉。已改进。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐