关于一个字符串截取的问题

xiruo 2004-01-12 08:20:31
要截断一个字符串,这个字符串是中英文混合的,一个英文占一个字节,而一个中文字符占两个字节,为了不将中文从中间截断,必须判断截断点上的字符是中文还是英文。
比如取三个字符:
aaaaaaa-->aaa
aa我aaaa-->aa我
<不将我字截断>
如何截???
...全文
46 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
fishstudio 2004-01-13
  • 打赏
  • 举报
回复
确切的说,字符串是依靠hash code来辨别的,

substring这个方法在截取string时,考虑的正是hash code不是我们主观认为的

字符个数
CoolAbu 2004-01-13
  • 打赏
  • 举报
回复
你像我下面这样截取,绝对不会出现截到中文中间去的情况。而且Linux平台,WIndows平台都是一样。

String aa="我wo是shi中zhong国guo人ren";
try
{
aa = new String(aa.getBytes("utf-8"), "utf-8");
// System.out.println(aa.substring(0,5));
System.out.println(aa.substring(1,5));
}
catch(Exception e)
{
e.printStackTrace();
}
along603 2004-01-13
  • 打赏
  • 举报
回复
那就转GBK在截取咯
bbmer 2004-01-13
  • 打赏
  • 举报
回复
请问hykwolf(Yankang Hu) :
你是怎样测试的?即怎样在GBK和ISO8859-1下进行测试的,可以可以告知源代码?
hykwolf 2004-01-13
  • 打赏
  • 举报
回复
我测试过,用iso8859-1和GBK两种编码下,中文String的length()返回不一样的
ex:String tmp="我的abc";
GBK下,tmp.lenth()=5
ISO8859-1下tmp.length()=7;//中文字符是2个字符串
还是有区别的
paulone 2004-01-13
  • 打赏
  • 举报
回复
使用ascii方法很不好的,有时候莫名其妙的去不到值~,直接截取就可了!
sammy791010 2004-01-13
  • 打赏
  • 举报
回复
java利用的是unicode编码方式!楼主大可放心!
futurebus 2004-01-13
  • 打赏
  • 举报
回复
还是使用hash code好一些。
不建议使用ascii
qm0445 2004-01-13
  • 打赏
  • 举报
回复
哦!谢谢老兄指点:)
Leemaasn 2004-01-13
  • 打赏
  • 举报
回复
我也Up一下

我也Up两下

!!!
^@^
fishstudio 2004-01-13
  • 打赏
  • 举报
回复
qm0445(海狗) hash code在java 里面是一种机制,很安全

你如果判断ascii的值,碰上汉字有可能造成数据丢失或者内存泄露

不是好办法
kewin 2004-01-13
  • 打赏
  • 举报
回复
学习
qm0445 2004-01-13
  • 打赏
  • 举报
回复
还是判断字符的ASCII值吧!
loveyousomuch 2004-01-13
  • 打赏
  • 举报
回复
办个板凳来,学习一下
pleonheart 2004-01-12
  • 打赏
  • 举报
回复
String str = "<不将我字截断>";
System.out.println(str.substring(0,2));
String的length是不会出现将中文截断的
GFox 2004-01-12
  • 打赏
  • 举报
回复
不会出现这样问题,在java中,一个英文也是占两个字节,和中文字是一样的
不会将中文分成两段的

所以楼主放心用好了
Mars_wx 2004-01-12
  • 打赏
  • 举报
回复
判断字符的ASCII值,

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧