如何判断一个字符串是中文的还是英文的?

keyong19ryry 2003-04-17 08:19:15
如题!
有一个字符串,可能是英文的如:administrator
也有可能是中文的,如:中华人民共和国
或者是中英文混合的,如:中国人民China
现在我想不管它是什么的,我只想获取这个字符串的前8个字符
可是好像在JAVA里中文的一个字和英文的一个字母都是1个字符长度
,现在我想把中文处理成两个字符,请问高手,我该怎么实现。

谢谢!!!
...全文
255 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
waveszhang 2003-05-04
  • 打赏
  • 举报
回复
对了,哪位还做过ssl安全连接和rsa加密,我想在做论坛时一并学习,万分感谢~
麻烦给小弟点建议、给些链接,谢谢~~
keyong19ryry 2003-04-17
  • 打赏
  • 举报
回复
to:lynx800602(任我行)
我要得是获取汉字时一个要当两个处理。
lynx800602 2003-04-17
  • 打赏
  • 举报
回复
返回ss的第2到第7个字节
String ss="asdfghjkl";
ss=ss.substring(2,7);
System.out.println(ss);
结果:dfghj
keyong19ryry 2003-04-17
  • 打赏
  • 举报
回复
我用了最笨的办法,不知道合适不合适
高手指正!
//获取指定格式的字符串
//入口:操作字符串,要获取的长度,要补齐的位置(0:左;1:右)
//返回:指定格式的字符串
public static String getStringByByteLen(String s,int iLen,int iPos){
char c='';
String sAsc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.+-";
String lsResult="";
int iGetedLen=0;

for(int i=0;i<s.length();i++){
c=s.charAt(i);
if(sAsc.indexOf((int)c)>=0){
lsResult +=c;
iGetedLen+=1;
}else{
lsResult+=c;
iGetedLen +=2;
}
if(iGetedLen>=iLen)break;
}
if(iGetedLen<iLen){
for(int i=0;i<(iLen-iGetedLen);i++){
if(iPos==0)lsResult = " "+lsResult;
else lsResult = lsResult+" ";
}
}
return(lsResult);
}
keyong19ryry 2003-04-17
  • 打赏
  • 举报
回复
呵呵,很不好意思,我真的不会。
请问我怎么判断一个字符串是不是在ASCII范围内?
是不是这样
for(int i=0;i<s.length();i++){
c=s.charAt(i);
if((int)c>256) c在ASCII字符串

else c不在ASCII中
}

谢谢!
bisslot 2003-04-17
  • 打赏
  • 举报
回复
晕~~ "ab" 与 "汉字" ,请问它们相等吗? 还有你会用 unicode 方式来解决吧?
keyong19ryry 2003-04-17
  • 打赏
  • 举报
回复
你的方法能实现但是
我想JAVA有没有能直接处理的函数?
就是从字符串中返回指定字节数长度的字符串的函数
bisslot 2003-04-17
  • 打赏
  • 举报
回复
解决办法:

(1) 将字符串转换成字符数组.
(2) 遍厉字符数组,并判定每一字符是否在英文字符的ASCII范围内

... (略)
...
char a = 'A' /* ascii 值为 65*/
int b = (int)a;

81,094

社区成员

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

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