六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 68|回复: 0

按字节数截取含中文的字符串

[复制链接]

升级  66%

7

主题

7

主题

7

主题

童生

Rank: 1

积分
33
 楼主| 发表于 2013-1-26 14:10:25 | 显示全部楼层 |阅读模式
帖子地址:http://www.iteye.com/topic/1037773

判断一个字符是否为中文参考文章地址:http://blog.csdn.net/Kilper/archive/2010/08/21/5829300.aspx

我的代码实现
public class Substring {public static void main(String[] args) {String str = "我ABC汉DEF";System.out.println(substring(str, 6));}/** * @param str *            字符串 * @param bytes *            需要截取的字节数 * @return 结果 */public static String substring(String str, int bytes) {if (null == str) {return null;}StringBuffer sb = new StringBuffer();// 截取了的字节数int len = 0;for (char c : str.toCharArray()) {if (isChinese(c)) {// 如果是中文,字节数加2len += 2;} else {// 如果不是中文,字节数加1len++;}if (len > bytes) {// 如果字节数大于了需要截取的,则终止break;} else {sb.append(c);}}return sb.toString();}/** * 判断一个字符是不是中文  */public static boolean isChinese(char c) {Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {return true;}return false;}}

输出结果:
我ABC
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表