如何实现按字节截取字符串(中文占2字节,英文占1字节,substring())?
2012-02-21 21:13
926 查看
str = "我a智能abc"
substring(str, 5) 会截取成为 “我a智能a”
现在要实现中文占2字节,英文占1字节,按字节截取 ,输出应该为"我a智"
substring(str, 5) 会截取成为 “我a智能a”
现在要实现中文占2字节,英文占1字节,按字节截取 ,输出应该为"我a智"
public class SubString{ /** * */ public static int trimGBK(byte[] buf,int n){ int num = 0; boolean bChineseFirstHalf = false; for(int i=0; i<n; i++){ if(buf[i]<0 && !bChineseFirstHalf){ //是中文的情况,num不用++ bChineseFirstHalf = true; }else{ num++; bChineseFirstHalf = false; } } return num; } public static void main(String[] args){ String str = "我a智能abc"; try{ //使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。 int num = trimGBK(str.getBytes("GBK"),5); System.out.println(str.substring(0,num)); //输出"我a智" }catch(Exception e){ e.printStackTrace(); } //System.out.println(str.substring(0,5)); //输出"我a智能a" } } /* String str = "我a智能abc"; for(int i=0; i<str.getBytes("GBK").length; i++){ System.out.println(str.getBytes("GBK")[i]); } 输出:-50 -46 97 -42 -57 - 60 -36 97 98 99 中文是两个负数,英文是1个正数 */
相关文章推荐
- C#、Java实现按字节截取字符串包含中文汉字和英文字符数字标点符号等
- javaSE-基础篇-如何获得中文英文混合字符串的字节长度
- GB2312 字符串,单字节英文,双字节中文的完整类实现
- js:单字节(英文一个,中文二个)长度/截取(substr)实现
- 用Java实现按字节长度截取中英文数字字符串的方法总结
- java 实现截取字符串并按字节分别输出实例代码
- 用Java实现按字节长度截取字符串的方法
- Smarty截取字符串(中文和英文均支持)
- 字符串长度及截取(中文2字符,英文1字符)
- 如何实现用更少的空间表示英文字母(a ~ z)构成char A[n]字符串
- "Unicode"编码,java实现一个按字节截取字符串的子串的方法
- C#如何根据字节截取字符串指定长度
- javascript截取字符串(通过substring实现并支持中英文混合)
- 在sqlserver中如何从字符串中提取数字,英文,中文,过滤重复字符
- 输入字符串和字节数,截取子串(串中含有中文字符)
- 最近公司项目需要实现微信的@ 功能,如何判断@前的最后一个字节是什么格式,因为阿拉伯数字和英文字母是不会跳转提醒的
- 截取字符串,中文一个字算一个字,英文两个字符算一个字
- 如何用js实现截取一个字符串中的数字
- [转]在sqlserver中如何从字符串中提取数字,英文,中文,过滤重复字符
- Python实现简单截取中文字符串的方法