编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是保证汉子不被截半个,例如输入“人ABC” 4,应该截为“人AB”;输入“人ABC们DEF” 6,应该输出为“人ABC”,而不是“人ABC+半个们”。
分析:在String中英文占1个字节,中文占2个字节
1 public class TruncateStr { 2 private boolean isChinese(char cc){ 3 String str = String.valueOf(cc); // 将字符转换成字符串 4 return str.getBytes().length > 1; // 将字符串转变为字节数组 5 } 6 private String truncateStr(String str, int len){ 7 if (str == null || str.equals("") || len == 0){ 8 return ""; 9 } 10 char [] charArr = str.toCharArray(); // 将字符串装换成字符数组 11 StringBuilder sb = new StringBuilder(); 12 int count = 0; 13 for (char cc : charArr){ // 遍历字符数组 14 if (count < len){ 15 if (isChinese(cc)){ 16 if (count + 2 <= len){ 17 sb.append(cc); 18 count += 2; 19 }else { 20 return sb.toString(); 21 } 22 }else{ 23 sb.append(cc); 24 count++; 25 } 26 } else { 27 break; 28 } 29 } 30 return sb.toString(); 31 } 32 public static void main(String[] args){ 33 TruncateStr ts = new TruncateStr(); 34 System.out.println(ts.truncateStr("人ABC们DEF", 6)); 35 } 36 }
原文地址:https://www.cnblogs.com/0820LL/p/9672124.html
时间: 2024-10-10 06:33:36