JS区分中英文字符的两种方法: 正则和charCodeAt()方法

 

 

 


JS区分中英文字符的两种方法: 正则和charCodeAt()方法。

正则无疑是最强大的判断各种条件的方法, 最近也在研习它, 虽然枯燥, 但仍有乐趣. 用它来判断一个双字节的中文字符也是轻而易举地. 而判断中文字符,  简单且执行效率高.


 

regExpForm.οnblur=function(){
        entryVal=this.value;
        entryLen=entryVal.length;
        cnChar=entryVal.match(/[^\x00-\x80]/g);//利用match方法检索出中文字符并返回一个存放中文的数组
        entryLen =cnChar.length;//算出实际的字符长度
    }


 


第二种方法是通过charCodeAt()方法判断Unicode码值, 若大于255即为中文字符, 它的执行效率没有正则高, 也没有正则简单.


 

entryVal=this.value;
        entryLen=entryVal.length;
        for(var i=0;i<entryVal.length;i  ){
            if(entryVal.charCodeAt(i)>255){//遍历判断字符串中每个字符的Unicode码,大于255则为中文
                cnArr.push(entryVal[i]);//讲符合条件的值插入到中文字符数组中
                //注意一个小bug,push是向数组的末尾添加一个或多个元素并返回新的长度,所以未刷新的情况下反复blur会累加字符值
            }
        }
        entryLen =cnArr.length;


 

 

 

### 回答1: 可以使用 JavaScript 的 `length` 属性来统计字符串的长度,但是这个属性只能统计英文字符和 ASCII 码字符的个数。对于中文字符,它的长度会被统计成 2。 如果想要正确地统计字符串中中文字符的个数,可以使用以下代码: ``` function getStringLength(str) { var len = str.length; for (var i = 0; i < str.length; i++) { if (str.charCodeAt(i) > 127 || str.charCodeAt(i) == 94) { len++; } } return len; } ``` 这段代码会遍历字符串中的每一个字符,如果发现字符的 ASCII 码大于 127(即该字符为中文字符)或者等于 94(即该字符为特殊字符 ^),就将 `len` 加 1。 ### 回答2: 要实现统计字符串长度,包括中文、英文和特殊字符,可以使用JavaScript。下面是一个示例代码: ```javascript function countStringLength(str) { // 将字符串转为Unicode编码数组 var arr = Array.from(str); var count = 0; for (var i = 0; i < arr.length; i++) { // 判断是否为汉字 if (arr[i].charCodeAt(0) > 255) { count += 2; // 汉字长度计为2 } else { count += 1; // 英文和特殊字符长度计为1 } } return count; } // 测试示例 var str = "Hello, 你好!"; console.log(countStringLength(str)); // 输出:11 ``` 上述代码首先将输入的字符串转换为Unicode编码的数组,然后遍历数组中的每个字符。通过判断字符的Unicode编码是否大于255,可以确定是中文字符还是其他字符。如果是中文字符,则长度计为2;如果是英文或特殊字符,则长度计为1。最后累加每个字符的长度并返回结果。 运行上述的示例代码,输出结果为11,表示字符串"Hello, 你好!"的长度为11个字符,其中包括4个英文字母、2个标点符号和2个中文字符。 ### 回答3: 要实现统计字符串长度包含中文英文特殊字符,可以使用JavaScript的字符串处理方法。 首先,我们可以使用字符串的`length`属性来获取字符串的长度。但是需要注意的是,它只能统计字符的个数,并不能区分中文和英文字符。比如,对于字符串"hello 你好",使用`length`属性将返回9,而不是6。 为了能够正确统计包含中文、英文和特殊字符字符串长度,我们可以使用正则表达式来匹配并计算字符的个数。我们可以使用`/[\u0000-\u00FF]/`来匹配所有的英文和特殊字符,使用`/[^\u0000-\u00FF]/`来匹配所有的中文字符。 下面是一个使用JavaScript实现统计字符串长度的例子: ```javascript function getStringLength(str) { var len = str.length; var chineseCharCount = str.match(/[^\u0000-\u00FF]/g) || []; // 匹配中文字符正则表达式 var chineseCount = chineseCharCount.length; return len - chineseCount + chineseCount * 2; // 英文字符长度为1,中文字符长度为2 } var str = "hello 你好!@#$%^"; console.log(getStringLength(str)); // 输出18 ``` 在这个例子中,我们定义了一个名为`getStringLength`的函数,它接收一个字符串作为参数。在该函数中,我们首先使用`length`属性获取字符串的长度,并赋值给变量`len`。 然后,我们使用`match`方法匹配所有中文字符,并将匹配结果保存在变量`chineseCharCount`中。使用`|| []`的目的是,如果没有匹配到中文字符,`match`方法将返回`null`,我们希望始终保持变量`chineseCharCount`是一个数组,而不是`null`。 接下来,我们使用`len`减去中文字符的个数`chineseCount`,得到英文和特殊字符的个数。最后,我们将`chineseCount`乘以2,表示中文字符的长度为2,将其加到总长度上,得到最终的字符串长度。 在例子中,我们使用`console.log`方法将函数的返回值输出到控制台,得到字符串长度18。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值