浏览 6547 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (11) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-22
最后修改:2009-06-22
题目是: 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。 public class SplitStr { /* * 判断是否为汉字 * * @param cc 输入字符 */ public static boolean strIfChinese(char cc) { String ccStr = String.valueOf(cc); return ccStr.getBytes().length > 1 ? true : false; } /* * 计算输入字符串的总字节数 * * @param str */ public static int strTotalLen(String str) { int len = 0; char[] chr = str.toCharArray(); for (char cc : chr) { if (!strIfChinese(cc)) { len = len + 1; } else { len = len + 2; } } return len; } /* * * @param inputStr 输入的字符串 * * @param len 指定长度的字节数 */ public String retStr(String inputStr, int len) { // 如果输入的字符串为空或者是"",则直接输出""; if (inputStr == null || inputStr.equals("")) return ""; // 如果len为0或大于总字节数 if (len == 0 || len > strTotalLen(inputStr)) return inputStr; char[] chr = inputStr.toCharArray(); String str=""; int count = 0; for(char cc:chr){ if (count < len) { if (strIfChinese(cc)) { if (count + 1 == len) return str; count = count + 2; str = str + String.valueOf(cc); } else { count = count + 1; str = str + String.valueOf(cc); } } } return str; } /** * @param args */ public static void main(String[] args) { /* * String str = "a我bc"; char[] chr = str.toCharArray(); byte[] byt = * str.getBytes(); for (byte bb : byt) { System.out.println(bb); } * * for (char cc : chr) { System.out.println(cc); } */ // System.out.println(chr.length + "&&&" + byt.length + "%%%" + by); SplitStr splitStr = new SplitStr(); String str = "我b们c"; System.out.println(splitStr.retStr(str, 6)); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |