按字节截取含有中文汉字的字符串

简介:
public static void main(String[] args) throws UnsupportedEncodingException {
		// TODO Auto-generated method stub
		// 原始字符串
		String s = "我ZWR爱JAVA";
		System.out.println("原始字符串:" + s);
		try {
		System.out.println("截取前1位:" + CutString.substring(s, 1));
		System.out.println("截取前2位:" + CutString.substring(s, 2));
		System.out.println("截取前4位:" + CutString.substring(s, 4));
		System.out.println("截取前6位:" + CutString.substring(s, 6));
		} catch (UnsupportedEncodingException e) {
		e.printStackTrace();
		}
	}

 
public static String substring(String orignal, int count) throws UnsupportedEncodingException{
		if(!"".equals(orignal) && orignal != null){
			// 将原始字符串转换为GBK编码格式
			orignal = new String(orignal.getBytes(), "GBK");
			if(count > 0 && count < orignal.length()){
				StringBuffer sb = new StringBuffer();
				char c;
				for (int i = 0; i < count; i++) {
					c = orignal.charAt(i);
					sb.append(c);
					if(isChineseChar(c)){
						// 遇到中文汉字,截取字节总数减1
						--count;
					}
				}
				return sb.toString();
			}
		}
		return orignal;
	}


 

//判断是否是一个中文汉字
	public static boolean isChineseChar(char c) throws UnsupportedEncodingException{
		return String.valueOf(c).getBytes("GBK").length > 1;
	}


 

相关文章
验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数
验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数
|
数据库
轻松解决汉字和拼音转换问题!!
轻松解决汉字和拼音转换问题!!
157 0
有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数
有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数
255 0
限制汉字的长度(包括处理英文字母)
  一个汉字的长度等于两个英文字母的长度。   所以在限制字符串长度的时候,需要将两者的类型转换成一致,处理方法如下:       /** 字符串截取 参数 str 字符串 len 长度。
1154 0
|
JavaScript 前端开发 芯片
javascript 返回字符长度,中文为两个字节,英文为一个字节
//正则:用于区分中文为两个字节function getLength(str){    return String(str).replace(/[^\x00-\xff]/g,'aa').length;} 输入: abc:返回3 测试:返回4
683 0
|
C#
c#获取带有汉字的字符串长度
不知道大家注意没,用c#下自带的str.Length方法获得字符串str长度的时候,返回的总是字符的个数,但是如果字符串中包含汉字的话,一个汉字是占两个字符长度的,获取的长度值就有了问题。 解决方案:  原文: http://www.cnblogs.com/haibing0107/p/5825600.html 正常情况下,我们是直接去string的length的,但是汉字是有两个字节的,所以直接用length是错的。
985 0