【原】汉字/英文字符长度判断--JS版与Java方法版

我想我们大家都知道,好多数据库中存储中文汉字与英文的字节数是不同的。如果某个字段长度有固定大小,我们就需要对插入数据的大小进行校验。之前做安邦电销项目时就曾经遇到该类问题,现在将其前台与后台的校验核心方法罗列出来,希望能对大家有所帮助

JS方法:
<script   language=javascript>
String.prototype.lenB   
=   function(){return   this.replace(/[^\x00-\xff]/g, "**").length;}
var   str   =   "这是一个可以将汉字计算成两个字节的函数 ";
alert( 
"老的算法   =   "   +   str.length);
alert( 
"新的算法   =   "   +   str.lenB());
</script>
说明:上面JS里方法里的"**"表示把一个中文替换成英文的位数。"**"代表一个中文=两个英文

java方法:
 1 /**
 2      * 获取字符串的长度,如果有中文,则每个中文字符计为2位
 3      *
 4      * @param value
 5      *            指定的字符串
 6      * @return 字符串的长度
 7      */
 8     public int chineseLength(String value) {
 9         int valueLength = 0;
10         String chinese = "[\u0391-\uFFE5]";
11         /* 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1 */
12         for (int i = 0; i < value.length(); i++) {
13             /* 获取一个字符 */
14             String temp = value.substring(i, i + 1);
15             /* 判断是否为中文字符 */
16             if (temp.matches(chinese)) {
17                 /* 中文字符长度为2 */
18                 valueLength += 2;
19             } else {
20                 /* 其他字符长度为1 */
21                 valueLength += 1;
22             }
23         }
24         return valueLength;
25     }
说明:我想大家一看就懂了吧,关键语句是第18行。




posted on 2010-12-15 10:10 龙樱 阅读(2384) 评论(0)  编辑  收藏 所属分类: 工具类


只有注册用户登录后才能发表评论。


网站导航:
 
<2010年12月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

常用链接

留言簿(3)

随笔分类(13)

随笔档案(13)

文章分类(1)

文章档案(1)

搜索

最新评论

阅读排行榜

评论排行榜