`
leign
  • 浏览: 166750 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

无乱码截取汉字字母数字混合字符串

    博客分类:
  • JAVA
F# 
阅读更多
无乱码截取汉字字母数字混合字符串
其实思路很简单,一个汉字占两个字节,其他英文字母占一个,故,只要截的地方不在那个汉字的‘中间’就行了。
思路:奖字符串字节化,转化为字节数组,统计到限制长度左右的汉字数以及其他字母数,最后再来取舍。

public class SubString {
	private String target;
	
	public static String getSubString(String str,int limitLen)
	{
		String sub = null;
		
		int len = str.length();
		
		byte[] bytes = str.getBytes();
		int num=0;
		for(int i=0;i<bytes.length;i++){
			if(bytes[i]<0)
				num+=2;
			else
				num++;
			
			if(num >= limitLen)
				break;
		}
		
		if(num > limitLen){
			num-=2;
		}
		
		sub = new String(bytes,0,num);
		
		return sub;
	}

	public static void main(String[] args)
	{
		String target = "asier有法可依的要jdi在f我i的23423";
		
		System.out.println(getSubString(target, 7));
		System.out.println(getSubString(target, 8));
		System.out.println(getSubString(target, 9));
	}
}
0
0
分享到:
评论
2 楼 leign 2009-12-09  
009dsa 写道
兄弟 我不明白你在干什么?

中文可以取半个吗?


可倒是可以,但可能出现乱码,可以找个例子从汉字中间截取,然后看结果
1 楼 009dsa 2009-12-09  
兄弟 我不明白你在干什么?

中文可以取半个吗?

相关推荐

Global site tag (gtag.js) - Google Analytics