按字节截取带有中文字符的字符串
2016-11-28 20:27
253 查看
题目: 编写一个函数,要求输入一个字符串和字节数,输出该字节个数的子字符串。
思路: 在Java编程语言中,String自带的substring()方法可以按字符个数截取指定长度的字符串。而题目要求按照字节进行截取,因为此时存在中文(占两个字节),所以不能直接使用substring()方法进行截取。主要的步骤是:
1. 判断是否为中文;
2. 非中文则字符直接加一,中文则需再次细分:
(1). 字节数没有将中文截断,字符数加一,且跳过该中文第二个字节;
(2). 字节数将中文截断,字符数不变(只会发生在最后一位)
代码如下:
思路: 在Java编程语言中,String自带的substring()方法可以按字符个数截取指定长度的字符串。而题目要求按照字节进行截取,因为此时存在中文(占两个字节),所以不能直接使用substring()方法进行截取。主要的步骤是:
1. 判断是否为中文;
2. 非中文则字符直接加一,中文则需再次细分:
(1). 字节数没有将中文截断,字符数加一,且跳过该中文第二个字节;
(2). 字节数将中文截断,字符数不变(只会发生在最后一位)
代码如下:
public String cutStringByByte(String string, int bytes) { // 获取字符串的编码 private byte[] buffer = string.getBytes("GBK"); private int count = 0; // 字符个数 for (int i = 0; i < bytes; i++) { if (buffer[i] < 0 && i + 1 < bytes) { count++; // 中文且没有被截断,字符数加一 i++; // 跳过该中文 } else if (buffer[i] > 0) { count++; // 非中文,字符数加一 } } return string.substring(0, count); }
相关文章推荐
- 从一个包含汉字和其他字符的字符串中截取指定字节长度的字符串,不可以出现中文乱码
- 输入字符串和字节数,截取子串(串中含有中文字符)
- C#、Java实现按字节截取字符串包含中文汉字和英文字符数字标点符号等
- 截取带有中文字符串的字节索引
- 求中英文混合字符串长度,中英文混合字符串截取(汉字2个字节,字母数字等1个字节),字符转ASCII码,ASCII码转字符
- 如何实现按字节截取字符串(中文占2字节,英文占1字节,substring())?
- 带有中文的字符串各个字符的获取c++程序
- 设计函数,输入为一个字符串,里边包含中文、英文、数字等字符,编码为GBK。中文字符的编码规则假定为:双字节组成,高字节大于0x80,低字节任意。
- 截取包含多字节字符的字符串
- 学习笔记之vc 6.0 下 含中文字符串 字符长度 获取及截取
- 截取指定的字符长度(其中字符串中有中文,如果有半个中文则去掉)
- 截取字符串,只截取前N个字节的字符
- 写了一个字符串截取一定长度的代码,中文两个字符,英文一个字符,如果截断了自动用一个.或两个.来对齐,用于标题的显示
- 截取字符串,中文一个字算一个字,英文两个字符算一个字
- 读取中文字符串长度 AND 按长度截取中文字符串中字符
- 给定一个字符串,包含中文字符和英文字符,取给定大小字节的子串。
- 截取包含多字节字符的字符串
- Java按字节截取字符串(支持中文)!
- Java 按字节截取带有汉字的字符串的一种做法
- SQL 截取字符串,中文算两个字符的方法