截取指定长度的字符串(汉字不出现半个)
来源:互联网 发布:智慧城市四大数据库 编辑:程序博客网 时间:2024/06/08 08:58
/** * 定义一个方法,按照指定的长度截取字符. * 如:对于"ab你好",如果取三个字节,那么子串应该只显示"ab",半个汉字舍去. * 如果是四个字节就显示"ab你",截取5个字节还是"ab你". * * 汉字在GBK编码中是2个字节,字节数组转换成十进制都是负数, * 汉字在UTF-8中是3个字节,每个字节转换成十进制也是负数. */import java.io.IOException;public class GetStringByByte{ public static void main(String[] args) throws IOException { String str = "f过好的sd喆dd"; for (int len = 0; len < str.getBytes("gbk").length; len++) { System.out.println("截取" + (len + 1) + "个字节的结果是:" + getStringByByte(str, len + 1)); } } /** * 1.先把字符串转换成字节数组(注意字符集"gbk") * 2.根据要截取的长度,从index=len-1开始,倒序编列数组 * 3.判断每个字节十进制的值 * 4.如果<0,则计数器+1; 循环直到>0 * 5.判断计数器为偶数,则直接截取(0,len)字符串 * 6.若果计数器为奇数,则截取(0,len-1)字符串 * * @param str 要截取的字符串 * @param len 要截取的长度 * @return 截取后的字符串 * @throws IOException */ private static String getStringByByte(String str, int len) throws IOException { byte[] b = str.getBytes("gbk"); int count = 0; for (int i = len - 1; i >= 0; i--) { if (b[i] < 0) count++; else break; } if (count % 2 == 0) return new String(b, 0, len, "gbk"); else return new String(b, 0, len - 1, "gbk"); }}
0 0
- 截取指定长度的字符串(汉字不出现半个)
- 对指定的含中文的字符串按指定的字节数截取,碰到半个汉字的时候,不截取此半个汉字。
- 字符串截取(按指定的字节数)汉字不可以截取半个
- 截取一个中英文混合的字符串,不能出现截取半个汉字的问题
- 截取指定长度的字符串(包括汉字)
- 截取指定的字符长度(其中字符串中有中文,如果有半个中文则去掉)
- JAVA 中字符串的截取,要求不能截取半个汉字
- 有汉字字符串的截取,汉字不能截半个
- Java按照字节来截取字符串的工具,不会出现半个汉字
- 截取固定长度汉字差半个字符
- 带有汉字的字符串截断出现半个“汉字”的解决方法
- 汉字英文混合字符串 截取指定字符串长度
- java根据字节 截取字符串,保证汉字不被截取半个
- 从一个包含汉字和其他字符的字符串中截取指定字节长度的字符串,不可以出现中文乱码
- 将汉字字母混合字符串按指定字节截取长度
- 截取指定长度的字符串(UTF-8专用 汉字和大写字母长度算1,其它字符长度算0.5)
- 截取指定长度字符串
- 截取指定长度的字符串,超过指定长度的加...
- poj 1611
- VirtualBox下安装ubuntu出现单个文件超出了4G的提示
- import org.junit.Test;报错处理
- iOS App Archive 版本出错的问题 调试和解决方法
- 2014-7-15任务完成情况
- 截取指定长度的字符串(汉字不出现半个)
- 很好的技术博文推荐(持续更新)
- 用正向和逆向最大匹配算法进行中文分词(续)
- 【算法】插入排序 insert sort algorithm
- const分别在C和C++语言里的含义和实现机制
- C++中的前向声明
- VC++配置OpenCV
- 动态改变SLD
- Oracle创建本地连接