本文主要是介绍java 截取带汉字的字符串,汉字不能被截取成半个,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述:
编写一个截取字符串的函数,输入为一个字符串和字节数,
输出为按字节截取的字符串。但是要保证汉字不被截半个,
如"我ABC", 4,应该截为"我A",
输入"我ABC汉DEF",7,应该输出为"我ABC"而不是"我ABC+汉的半个"。
思路:
1.英文只占一个字节,中文占两个字节或者3个字节
2. 汉字的ASCII码均为负数
private static String subStr(String str, int num) {if (null == str || str.length() == 0 || num <= 0) {return "";}int len = str.length(), sum = 0;StringBuilder sb = new StringBuilder(num);for (int i = 0; i < len; i++) {String temp = String.valueOf(str.charAt(i));// 汉字转换成byte数组后,长度大于1,且字节数组内的值均小于0int tempLen = temp.getBytes().length;sum += tempLen;// 长度超限 跳出循环if (sum > num){break;}sb.append(temp);}return sb.toString();}
这篇关于java 截取带汉字的字符串,汉字不能被截取成半个的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!