字符串编程题一道
来源:互联网 发布:淘宝美工如何上新 编辑:程序博客网 时间:2024/06/10 16:53
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截去半个,列如“人ABC”4应该截取为“人AB”,输入“人ABC们DEF”6,应该输出“人ABC”而不是“人ABC+半个们”。
package cn.exercise.algorithmsTest;/** * 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截去半个, * 列如“人ABC"4应该截取为“人AB”,输入“人ABC们DEF”6,应该输出“人ABC”而不是“人ABC+半个们”。 * * @author 小豪 * */public class Test13 { // 判断字符c是否是中文字符,如果是返回true public static boolean isChinese(char c) { String sb = String.valueOf(c); return sb.getBytes().length > 1 ? true : false; } public String truncateStr(String str, int len) { if (str == null || str.equals("") || len == 0) { return ""; } char[] charArr = str.toCharArray(); StringBuilder sb = new StringBuilder(""); int count = 0; for (char cc : charArr) { if (count < len) { if (isChinese(cc)) { if (count + 1 == len) {//如果要求截取的字符串的长度只差一个字符,但接下来的字符是中文。则截取结果子串中不保存这个中文字符串 return sb.toString(); } count = count + 2; sb = sb.append(cc); } else { count = count + 1; sb = sb.append(cc); } } else { break; } } return sb.toString(); } public static void main(String[] args) { Test13 a = new Test13(); String sb = "人ABC们DEF"; System.out.println(a.truncateStr(sb, 6)); }}运行结果 人ABC
阅读全文
1 0
- 字符串编程题一道
- 字符串循环移位 - 编程珠玑的一道题
- 一道经常遇到的面试编程题,字符串逆序输出
- 从一道编程题看JS字符串连接性能
- 一道字符串解析题
- 一道编程题
- 一道编程题
- 一道编程题
- 一道有道编程题
- 一道编程题
- 笔试编程题一道
- 一道华为编程题
- 一道编程题
- 一道编程题
- thoughtworksd一道编程题
- 一道编程题
- 编程题一道
- 一道编程题
- Intellij IDEA 和maven创建web项目webapp全过程
- ThinkPHP5 域名单独路由
- Action/Func/Lamda/匿名委托
- 安卓5.1源码解析 : RecyclerView解析从绘制流程,ViewHolder复用机制,LayoutManger,ItemAnimator等流程全面讲解
- Date类型转换成String类型和String类型转换成Date类型
- 字符串编程题一道
- 16CF1-A
- __attribute__ ((packed)) 的作用
- KMP算法
- 欢迎使用CSDN-markdown编辑器
- Smart210 ping不通tftp服务器
- 萬丈高樓平地
- 机器学习(二十)
- 异 形 卵