如何辨别一个字符是汉字还是英文字符?

hou_jg 2002-06-03 07:45:29
欲将一个长度超过20的字符串,将它显示为“字符串…”的形式,因为在jsp中一个汉字算两个字符,所以
如果字符串为: str1 = "中国人民万岁世纪人民万岁";
则显示为: 中国人民万岁世纪人民…
但如果字符串为:str2 = “a中国人民万岁世纪人民万岁”;
则显示为: a中国人民万岁世纪人?…
最后一个汉字显示为问号。现在想根据这个字符串的形式,由程序自动来判断,将str2显示为: a中国人民万岁世纪人民...
的形式。请教各位高手,有何高见,请多赐教。

我的程序的一部分是这样的。

<%
strName = "中国人民万岁世纪人民万岁";
if(strName.length() > 20) {
strName = strName.substring(0,20).concat("...");
}
out.println(strName);
%>
页面的头部加
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<meta http-equiv="Content-Type" content="text/html; charset=GBK">
都不行。
...全文
113 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yakuu 2002-06-05
接:
public static String stringLengthFixed(String string,int len){
String buffer = null;
byte[] byteStr = string.getBytes();
if(byteStr.length < len){
StringBuffer sb = new StringBuffer(len - byteStr.length);
for(int i = 0; i < (len - byteStr.length)/2; i++)
sb.append("...");
buffer = string + sb.toString();
}else{
buffer = new String(byteStr,0,len);
if(buffer.length() == 0) {
buffer = new String(byteStr,0,len-1);
buffer = buffer.concat(".");
}
buffer = buffer.concat("...");
}
return buffer;
}

测试通过。
回复
titansavent 2002-06-04
呵呵,现成的,
收藏之:)
回复
dj12 2002-06-04
这是我从别人那copy过来test的,也给你看一下吧
public class T{
public static void main(String[] a){
String s = "aa阿萨wee";
System.out.println(s.length());
System.out.println(s.substring(0,6));
byte[] bytes = s.getBytes();
String s1;
int i ;
for(i =3 ;i>=0; i--){
if(bytes[i] > 0) {
System.out.println(bytes[i]);
break;
}
}
if(i % 2 == 1)s1 =new String(bytes,0,4);
else s1 =new String(bytes,0,3);
System.out.println(s1);
}
}
回复
bxh777 2002-06-03
判断ASCII值是否大于127。
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告