java截字符串问题

来源:百度知道 编辑:UC知道 时间:2024/05/11 02:02:00
用java写了个截字符串的方法:
public String check(String topic, int display) {
if (topic.length() > display) {

checkTopic = topic.substring(0, display-1) + "...";
} else {
checkTopic = topic;
}
return checkTopic;
}
但是这个方法不能区别汉字和字符的长度,例:
字符串:王一1234,取出长度是6。可是汉字是占两个字符啊。
应该怎么改,才能区别?
用getBytes()方法取了以后,长度是对了,可是用substring()方法,中文还是占一个啊。
5楼的方法可以,但是遇到汉字被截开时,会出现乱码。

public String getStr(String str,int getLen) throws UnsupportedEncodingException
{
String v=new String(str.getBytes("GBK"),"ISO8859-1");
if(v.length()<=getLen)
{
return str;
}

return new String((v.substring(0,getLen)).getBytes("ISO8859-1"),"GBK");
}

用字符串的getBytes()方法
例:ntopic=new String(topic.getBytes("gb2312"),"iso8859-1");
则上述ntopic.length()即为8

String str = ""王一1234;

str.getBytes().Length

你看看是不是就解决问题了

你试过你的程序吗?substring()中中文也是占一个字符

同意楼上,中文在其中也是占一个字符。