在javascript中如何得到中英文混合字符串的长度

 本文为大家介绍下Javascript中如何得到中英文混合字符串的长度,下面有个不错的教程,感兴趣的朋友可以参考下

有同事在公司的OA上发了个贴子,介绍在javascript中如何得到中英文混合字符串的长度。 
 
用的是正则表达式。 
 
 代码如下:
var str = ”坦克是tank的音译”; 
var len = str.match(/[^ -~]/g) == null ? str.length : str.length + str.match(/[^ -~]/g).length ; 
 
我查了一下书,有点明白了: 
 
西文常用字符集由空格“ ”(0x20)到“~”(0x7e)构成,汉字会落在这个字符集外,而正则表达式[^ -~]表示除空格到“~”外的字符集。 
 代码如下:
string.match(regex) 会以数组形式返回字符串string中匹配正则表达式regex的子串,所以, 
str.match(/[^ -~]/g)会以数组的形式返回一个个汉字。例如 
var str = "dd大哥"; 
//显示"大,哥",数组中返回两个汉字,数组长度为2 
alert(str.match(/[^ -~]/g)); 
 
这样,var len = str.match(/[^ -~]/g) == null ? str.length : str.length + str.match(/[^ -~]/g).length ;就可以得到str的正确长度了。 
 
在javascript中,一个汉字的长度也被计算为1,常常在提交到数据库中造成长度超标的错误,现在用这个方法,可以在提交前先检测一番了。 
 
注:以上代码有些符号有问题,经修正后,改为如下函数。 
代码如下:
function get_strlength (str) 

var len = 0; 
 
if (str.match(/[^ -~]/g) == null) 

len = str.length; 

else 

len = str.length + str.match(/[^ -~]/g).length; 

 
return len; 

 

时间: 2024-08-03 15:06:42

在javascript中如何得到中英文混合字符串的长度的相关文章

在javascript中如何得到中英文混合字符串的长度_javascript技巧

有同事在公司的OA上发了个贴子,介绍在javascript中如何得到中英文混合字符串的长度. 用的是正则表达式. 复制代码 代码如下: var str = "坦克是tank的音译"; var len = str.match(/[^ -~]/g) == null ? str.length : str.length + str.match(/[^ -~]/g).length ; 我查了一下书,有点明白了: 西文常用字符集由空格" "(0x20)到"~"

php 计算中英文混合字符串的长度

php 计算中英文混合字符串的长度 echo ccStrLen($str),'<hr>'; echo ccStrLeft($str,3); function ccStrLeft($str,$len) #从左边截取中英文混合字符串 { $ascLen=strlen($str);   if($ascLen<=$len) return $str; $hasCC=ereg("[xA1-xFE]",$str); #同上 $hasAsc=ereg("[x01-xA0]&

iOS中如何判断中英文混合的字符长度_IOS

废话不多说,直接给大家贴代码了. 一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //第一种方法 NSLog(@"--first-%i",[self convertToInt:@"123我爱你"]); //第二种方法 NSLog(@"--second--%ld",[self getToInt:@&

用C#截取指定长度的中英文混合字符串

字符串 我们常做的一件事情,就是在文章系统中,截取一定长度的文章标题,超过指定长度,就加"..." 如两个字符串:string str1 = "中国人要啊abc呀~";string str2 = "1中国人23456abc呀~"; 要截取后,输出: str1 = "中国人要...";str2 = "1中国人2..."; 即要把中英文混合的字符串,在截取后,长度要一致,即8个字节的长度(不包括三个点),而且不

在微软拼音2003中巧妙实现中英文混合输入

您输入的中文文本中,是否经常混有英文单词或英文缩略语?在中英文输入法之间频繁转换非常麻烦,那么微软2003提供了什么解决方案呢? 微软拼音2003提供了三种输入风格,无论哪一种输入风格,都会自动识别以大写开头的英文单词.如果是小写英文呢?只需要在输入英文结束后打回车(注意,可不是空格键啊!).不仅如此,微软2003还特别提供了中英文混合输入方式.它的设置步骤如下: 1. 点击输入法提示条中的"功能菜单"按钮(见图1),在下拉菜单中选择"输入选项"; 图1 功能菜单

Javascript中如何用正则表达式替换字符串中的图片地址

今天开发中遇到一个问题:如何替换一段HTML字符串中包含的所有img标签的src值? 开始想到的解决方法是: content.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi, function (match) {    console.log(match); }); 输出结果是: <img src="http://static.cnblogs.com/images/logo_small.gif"

javascript中使用正则表达式实现删除字符串中的前后空格_正则表达式

实例 复制代码 代码如下: <script> var str=" yexj00 "; str=str.replace(/^s*|s*$/g,''); alert(str); </script> 实例 模仿RTrim: 复制代码 代码如下: <script> var str="yexj00 "; str=str.replace(/s*$/g,''); alert(str); </script> 实例 代码以及测试代码如下

用CSS解决中英文混合字符串的截取省略问题的解决办法_经验交流

作为一个程序员,经常需要面对的一个问题就是在新闻等信息的标题列表中,常常为了适应表格的宽度,需要对过长的标题文字的进行截取并在截取后的文字末端加上省略号. 众所周知,有很多方法可以实现这个功能,JavaScript,ASP,PHP都有各自的实现方法,但是面临的问题有很多,比如中英文混杂时或在某些编码下,容易造成截取出现乱码的问题,虽然大多数问题已经有比较成熟的解决方案,但在数据量比较大时,使用JavaScript,ASP,PHP实现这一功能,无疑会给客户端或服务器端造成比较大的资源开销. 随着W

javascript中使用正则表达式实现删除字符串中的前后空格

实例 复制代码 代码如下: <script> var str=" yexj00 "; str=str.replace(/^s*|s*$/g,''); alert(str); </script> 实例 模仿RTrim: 复制代码 代码如下: <script> var str="yexj00 "; str=str.replace(/s*$/g,''); alert(str); </script> 实例 代码以及测试代码如下