java String中汉字的截取
2012-02-15 22:59
218 查看
package test;
public class CutString {
public static void main(String[] args) throws Exception {
String str = "我abc汗";
int num = trimGBK(str.getBytes("GBK"), 6);
System.out.println(str.substring(0,num));
}
//判断一个字节数组里面有没有汉字
public static int trimGBK(byte[] buf,int n) {
int num = 0;
boolean bChineseFirstHalf = false;
for(int i=0;i<n;i++) {
//一个字节如果小于0那么这个字符肯定就是存储汉字的一半了
if(buf[i]<0&&!bChineseFirstHalf) {
//所以需要把汉字给修改为true,因为这是半个汉字所以num不能加1
//当下一次循环过来的时候,因为bChineseFirstHalf = true;
//既然前面的是汉字的前半部分,那么这次循环到的肯定是汉字的后
//半部分,所以这个时候num++而且这个汉字已经过去了,因此
//要修改bChineseFirstHalf = false;
bChineseFirstHalf = true;
} else {
num++;
bChineseFirstHalf = false;
}
}
return num;
}
}
public class CutString {
public static void main(String[] args) throws Exception {
String str = "我abc汗";
int num = trimGBK(str.getBytes("GBK"), 6);
System.out.println(str.substring(0,num));
}
//判断一个字节数组里面有没有汉字
public static int trimGBK(byte[] buf,int n) {
int num = 0;
boolean bChineseFirstHalf = false;
for(int i=0;i<n;i++) {
//一个字节如果小于0那么这个字符肯定就是存储汉字的一半了
if(buf[i]<0&&!bChineseFirstHalf) {
//所以需要把汉字给修改为true,因为这是半个汉字所以num不能加1
//当下一次循环过来的时候,因为bChineseFirstHalf = true;
//既然前面的是汉字的前半部分,那么这次循环到的肯定是汉字的后
//半部分,所以这个时候num++而且这个汉字已经过去了,因此
//要修改bChineseFirstHalf = false;
bChineseFirstHalf = true;
} else {
num++;
bChineseFirstHalf = false;
}
}
return num;
}
}
相关文章推荐
- Java模块 -- String字符串操作(数字,汉字,特殊符号过滤/截取)
- 扩展Javascript的String原型, 添加汉字截取
- java按字节截取带有汉字的字符串的解法
- Java String 字符串截取和获取文件的上级目录
- Java的String字符串拼接,截取,查找及日期转换
- Java,bit比特,byte字节,char字符,short,int,long,float,double,string,字母,汉字/编码等
- Java从入门到精通 - JavaString 字符串拼接,截取,查找及日期转换
- Java,bit比特,byte字节,char字符,short,int,long,float,double,string,字母,汉字/编码等
- java string 截取文件名中的文件格式
- java 截取汉字
- 关于java按字节截取带有汉字的字符串的解法
- java string 判断中文汉字及中文字符
- JAVA 判断string字符串中是否有汉字
- JAVA String字符截取
- java把String字符串第一个汉字放到末尾
- java基础知识回顾之---java String final类普通方法的应用之“按照字节截取字符串”
- 判断java String中是否有汉字的方法
- Java用String 截取方式解析xml文件、处理大xml文件
- java String字符串截取