CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
【经验总结】不能实施并行处理的情况 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

英文字符和中文字符的长度如何比较?

楼主hlhtyql(南方人)2002-02-26 09:00:31 在 Java / J2SE / 基础类 提问

最典型的例子是用户注册,假如系统设定长度为20个字符(节)。通常我们判断字符串的长度是通过   .length()   方法来截取字符串的长度的,可是如果用户输入20个中文时,长度没有发生任何变化,可是它却占用了40个字节,也就是说根本无法插入到数据库中去。  
   
  请问各位大虾,通过什么方法可以判断英文字符的长度和中文字符的长度呢?这个实例在很多地方都能用到,希望作过类似判断的朋友不要保留。 问题点数:50、回复次数:20Top

1 楼GJA106(中文字符)回复于 2002-02-26 09:08:37 得分 0

String   sC   =   "中国";  
  String   sE   =   "en";  
  int   iChinalength   =   (filename.getBytes()).length;  
  int   iEnglishl   =   sE.length();Top

2 楼hlhtyql(南方人)回复于 2002-02-26 09:23:41 得分 0

请问   GJA106(中文字符)   :  
   
  在JavaScript里该如何写呢?我写的是  
  var   txtNewUserName   =   document.frmSelUserName.NewUserName;  
  var   sUserName   =   txtNewUserName.value;  
  var   bytestr   =   sUserName.getBytes();  
  if   (   bytestr.length<3||bytestr.length>20   )   {  
  alert("用户名必须是3-20个字符!请重新输入。");  
  //txtNewUserName.vlaue   =   "";   //clear   vlaue  
  txtNewUserName.focus();  
  return   false;  
  }  
   
  可是系统却说“对象不支持此属性和方法”。  
  该如何写呢?比较急。谢谢了。Top

3 楼yanchang(笨笨)回复于 2002-02-26 09:25:56 得分 0

我是这样做的  
  用toCharArray()将字符穿转化为char[]  
  判断char[i]的值,如果是标准Ascii(128)就家1,否则加2  
  其长度就是数据库varchar所允许的实际长度Top

4 楼GJA106(中文字符)回复于 2002-02-26 09:30:30 得分 0

偶不会用JavaScript:(Top

5 楼hlhtyql(南方人)回复于 2002-02-26 09:36:16 得分 0

to:yanchang(笨笨)    
   
  有具体的javascript代码吗?Top

6 楼hlhtyql(南方人)回复于 2002-02-26 09:49:14 得分 0

还有高手吗?Top

7 楼gzwrj(我无知,所以我有智慧.)回复于 2002-02-26 10:10:00 得分 0

我们是这样做的..  
  先判断输入是否有中文,如果有中文,那么以后输入的都是中文(就算是英文).Top

8 楼pengji(彭乃超)回复于 2002-02-26 10:26:36 得分 0

其实这个问题很简单,只需要判断输入的是内容的ASCII码是不是在0-128之间就可以了!  
  for   (i=0;   i<robjField.length;   i++)  
  {  
        intCode   =   (robjField.charCodeAt(i));  
        if   (intCode>=0   &&   intCode<=128)   continue;  
        return   false;  
  }  
  快给分,哈哈!Top

9 楼hlhtyql(南方人)回复于 2002-02-26 11:06:18 得分 0

to   :pengji(彭乃超)    
   
  你这样做不行啊!我的目的不仅仅用于注册,其实很多地方可以通用的。  
   
  如果用户既输入英文,又输入中文,你这样判断就不灵了。  
   
  作出来了我立马结帖。Top

10 楼hlhtyql(南方人)回复于 2002-02-26 11:07:51 得分 0

to   :pengji(彭乃超)    
   
  你这样做不行啊!我的目的不仅仅用于注册,其实很多地方可以通用的。  
   
  如果用户既输入英文,又输入中文,你这样判断是不是就不灵了?  
   
  作出来了我立马结帖。Top

11 楼armyshu(我和CSDN不得不说的故事)回复于 2002-02-26 11:42:57 得分 0

将pengji的改进一下,做一个长度计数器不就行了  
  for   (i=0;   i<robjField.length;   i++)  
  {  
  intCode   =   (robjField.charCodeAt(i));  
  if   (intCode>=0   &&   intCode<=128)   continue;  
  else   totallength=tmpl+2;  
  if(totallenth>"指定的长度");  
  alert(输入字符超长!);  
  return   false;  
  return   false;  
  }  
     
  Top

12 楼hlhtyql(南方人)回复于 2002-02-27 09:13:45 得分 0

还是不行啊!不能对长度进行累加,怎么解决啊?  
  急死人啦!!!Top

13 楼ddtqfly(风语无阻)回复于 2002-02-27 10:05:55 得分 0

可以使用   "StringName".getBytes().length     这样不管是中文还是英文都被转化为字节,这样如果是中文就为2   bytes   英文就为   1   byte   ,输出的就是总的长度了Top

14 楼ddtqfly(风语无阻)回复于 2002-02-27 10:05:55 得分 0

可以使用   "StringName".getBytes().length     这样不管是中文还是英文都被转化为字节,这样如果是中文就为2   bytes   英文就为   1   byte   ,输出的就是总的长度了Top

15 楼Brainy(晓晓)回复于 2002-02-27 13:12:53 得分 0

同意......Top

16 楼pengji(彭乃超)回复于 2002-02-27 22:31:17 得分 0

to:hlhtyql(南方人)    
  为什么不能对长度进行累加啊!?Top

17 楼hlhtyql(南方人)回复于 2002-02-28 21:10:35 得分 0

to:pengji(彭乃超)    
   
  sUserName为输入框的值:  
  for   (var   i=0;i<sUserName.length;i++)  
  {  
  var   totallength   =   0;  
  var   intCode   =   sUserName.charCodeAt(i);  
   
  if   (intCode>=0&&intCode<=128)   {//continue;  
  totallength   =   totallength+1;  
  }  
  else   {  
  totallength   =   totallength+2;  
  }  
  alert(totallength);  
  if   (totallength<3||totallength>20)   {  
  alert("用户名必须是3-20个字符!请重新输入。");  
  txtNewUserName.focus();  
  return   false;  
  }  
  return   true;  
  }   //end   for  
   
  你看我写的,值就是不累加,要么为,要么为2。Top

18 楼pengji(彭乃超)回复于 2002-02-28 22:27:59 得分 50

to:hlhtyql(南方人)你的代码中有严重错误我已经修改过了如下:  
   
  <!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.0   Transitional//EN">  
  <HTML>  
  <HEAD>  
  <SCRIPT   LANGUAGE="JavaScript">  
  <!--  
  function   a()  
  {  
  var   totallength=0;  
  for     (var     i=0;i<document.forma.sUserName.value.length;i++)  
          {  
  var str=document.forma.sUserName.value;  
              var   intCode=str.charCodeAt(i);  
               
              if     (intCode>=0   &&   intCode<=128)     {//continue;  
                  totallength=totallength+1;  
              }  
              else     {  
                  totallength=totallength+2;  
              }  
          }     //end     for  
  alert(totallength);  
  if     (totallength<3   ||   totallength>20)    
  {  
                  document.forma.sUserName.select();  
  alert("用户名必须是3-20个字符!请重新输入。");  
                  return     false;  
              }  
              return     true;  
  }  
  //-->  
  </SCRIPT>  
  <TITLE>   New   Document   </TITLE>  
  </HEAD>  
   
  <BODY>  
  <form   name="forma"   >  
  <input   type="text"   name="sUserName">  
  <input   type="button"   value="test"   onclick="a();">  
  </form>  
  </BODY>  
  </HTML>  
  Top

19 楼hlhtyql(南方人)回复于 2002-03-01 09:13:08 得分 0

to:   pengji(彭乃超)    
   
  我测试了一下,你的代码是完全正确的,我现在就结帖,50分全给你,并希望在以后继续得到你的帮助,能留下你的E--mail吗?  
   
  我的E--mail为:hlhtyql@263.net   。  
   
  非常感谢你。Top

20 楼pengji(彭乃超)回复于 2002-03-01 09:32:34 得分 0

没问题!我的MAIL是:pengji@21cn.com顺便问一下你是上海的吗?!Top

21 楼hlhtyql(南方人)回复于 2002-03-01 15:04:47 得分 0

to:   pengji(彭乃超)    
   
  谢谢!  
  我在北京。Top

22 楼anjex(anjex)回复于 2002-03-04 15:40:58 得分 0

/**    
              *   判断包含汉字的字符传的长度到底是多少来着;按照一个汉字    
              *   是两个字节来计算;  
              *   @param   String   str   所要进行判断的字符传;  
              *   @return   int   字符长度  
              */  
              public   int   ChStrLen(String   str)  
              {  
                  int   len=0;  
                  if   (str==null)   return   len;  
                  else    
                  {  
                    if   (str.length()>0)  
                    {  
                        char[]   arr=str.toCharArray();  
                        len=arr.length;  
                        for   (int   i=0;i<arr.length;i++)  
                        {  
                            if   (arr[i]>255)     len=len+1;  
                        }  
                    }  
                  }  
                  return   len;  
              }Top

相关问题

  • 如何判断中文英文字符的长度?
  • 请教:如何判断一个中英文混合的字符串中的中文和英文字符?以及它的长度?
  • 中文字符取长度问题?
  • 字符串中的中文字符长度处理
  • 关于C#中字符串中英文字符长度截取问题。
  • 求限制textArea最大字符数的函数?例如限制最多只能输入100个字符,输入可能是中文或英文,当输入了99个字符长度,则不能再输入一个汉字,只能
  • 高手教我怎样才能取得一个字符串的“像素长度” 包括中文和英文大小写各种情况。
  • 计算中英文字符串的长度
  • 汉字/英文字符长度限制,怎么写?
  • 汉字/英文字符长度限制,怎么写?

关键词

得分解答快速导航

  • 帖主:hlhtyql
  • pengji

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
CSDN网站24小时值班电话:13552009689
Copyright © 2000-2009, CSDN.NET, All Rights Reserved
GongshangLogo