js判断中英文字符串长度

本文介绍了几种在JavaScript中实现的中英文字符计数的方法,包括区分中英文字符的长度计算及统一按单字符计数的方式。这些实用的代码片段可以帮助开发者快速实现文本长度的精确控制。
<script language="javascript">
//判断中英文:
function isChinese(str)
{
var lst = /[u00-uFF]/;
return !lst.test(str);
}
if(isChinese("名字"))
alert("Yes");
else
alert("NO");
</script>
________________________________________________
<script language="javascript">
function isChinese(str)
{
var lst = /[u00-uFF]/;
return !lst.test(str);
}
function strlen(str)
{
var strlength=0;
for (i=0;i<str.length;i++)
{
if (isChinese(str.charAt(i))==true)
strlength=strlength + 2;
else
strlength=strlength + 1;
}
return strlength;
}
//-------------------
var strtest="This测试!";
alert(strlen(strtest));
</script>
_________________________________________________
/////////////////////////////////////////////////////////////////////////
_________________________________________________
不分中英文字符都按一个字符计算:
<td>
<textarea name="content" cols=60 rows=8 onKeyUp="textLimitCheck(this,70);"></textarea>
<br>限 70 个字符 已输入 <font color="#CC0000"><span id="messageCount">0</span></font> 个字
</td>
<script>
function textLimitCheck(thisArea, maxLength){
if (thisArea.value.length > maxLength)
{
alert(maxLength + ' 个字限制. /r超出的将自动去除.');
thisArea.value = thisArea.value.substring(0, maxLength);
thisArea.focus();
}
/*回写span的值,当前填写文字的数量*/
messageCount.innerText = thisArea.value.length;
}
</script>
_______________________________________________
/////////////////////////////////////////////////////////////////////////////////
JavaScript 中,正确计算中文字符串的字符长度需要注意字符编码的差异。默认情况下,`length` 属性返回的是字符串中字符的数量,而不是字节大小。然而,对于包含中文字符(通常占用 2 个字节)和英文字符(通常占用 1 个字节)的混合字符串,需要通过自定义方法区分并计算字符的实际长度。 可以通过遍历字符串中的每个字符,并根据其 Unicode 编码范围来判断是中文字符还是英文字符,从而累加对应的长度值。具体实现如下: ```javascript function getChineseStringLength(str) { let length = 0; for (let i = 0; i < str.length; i++) { const charCode = str.charCodeAt(i); if (charCode > 0 && charCode <= 128) { length += 1; // 英文字符或数字,占1个字节 } else { length += 2; // 中文字符,占2个字节 } } return length; } ``` 上述代码中,通过 `charCodeAt()` 方法获取每个字符的 Unicode 编码,然后根据编码范围判断字符类型并累加长度。这种方法可以更准确地计算字符串的实际字节长度,适用于需要区分中英文字符的场景,例如限制输入框中字符串的最大长度[^3]。 如果目标仅仅是计算中文字符的数量,可以通过正则表达式匹配中文字符,忽略英文字符和数字。实现方式如下: ```javascript function countChineseCharacters(str) { const chineseChars = str.match(/[\u4e00-\u9fa5]/g); return chineseChars ? chineseChars.length : 0; } ``` 在此实现中,使用正则表达式 `/[\u4e00-\u9fa5]/g` 匹配所有中文字符,并通过 `match()` 方法返回匹配结果的数组。最终通过数组的长度确定中文字符的数量。这种方法适用于仅需统计中文字符的场景,例如验证输入框中中文字符的最大数量限制[^3]。 ### 总结 - 如果需要计算字符串的字节长度,可以使用遍历字符并根据 Unicode 编码范围累加长度的方法。 - 如果仅需统计中文字符的数量,可以使用正则表达式匹配中文字符并统计数量。 这两种方法可以根据实际需求选择使用,从而更准确地计算中文字符串的字符长度或字节长度。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值