在 javascript 中,英文和中文等双字节字符都被当作是1个字符,但是通常我们需要将中文按两个字节处理,本文介绍的就是用 javascript 正确截取单字节和双字节混和字符串的方法。
<script type="text/javascript">
/*************************************************************
Author : Yanfu Xie <xieyanfu@yahoo.com.cn>
Url : http://YITU.org
Description : 正确截取单字节和双字节混和字符串
String str : 要截取的字符串
Number : 截取长度
*************************************************************/
function substr(str, len)
{
if(!str || !len) { return ''; }
//预期计数:中文2字节,英文1字节
var a = 0;
//循环计数
var i = 0;
//临时字串
var temp = '';
for (i=0;i<str.length;i++)
{
if (str.charCodeAt(i)>255)
{
//按照预期计数增加2
a+=2;
}
else
{
a++;
}
//如果增加计数后长度大于限定长度,就直接返回临时字符串
if(a > len) { return temp; }
//将当前内容加到临时字符串
temp += str.charAt(i);
}
//如果全部是单字节字符,就直接返回源字符串
return str;
}
var str = "呵呵he哈哈嘿嘿and";
document.write("字符串:<font color='red'>"+str+"</font><br /><br />");
document.write("javascript 默认截取10个字节的返回值:<br />");
document.write("<font color='red'>"+str.substr(0, 10)+"</font><br /><br />");
document.write("用本文介绍的方法截取10个字节的返回值:<br />");
document.write("<font color='red'>"+substr(str, 10)+"</font><br /><br />");
document.write("截取9个字节的返回值:<br />");
document.write("<font color='red'>"+substr(str, 9)+"</font><br /><br />");
</script>
分享到:
相关推荐
### JavaScript截取中文字符串知识点详解 #### 一、引言 在进行文本处理时,我们经常需要对字符串进行截取操作。特别是在处理包含多种字符集(如英文与中文)的字符串时,考虑到不同字符编码长度的差异性,简单地...
示例函数sub()使用正则表达式来处理中英文混合字符串,通过比较替换后的字符串长度来判断截取长度是否正确。 示例代码如下: ```javascript <script type="text/javascript"> var sub = function(str, n) { var r...
var str = "javascript高效按字节截取字符串方法getBlengthjavascript高效按字节截取字符串方法getBlength"; str = str.replace(/./g,str).replace(/./g,str); console.log("创造的字符串长度为:", str.length); ``...
正确的方法是首先将输入的字符串按照编码规则进行转换,计算出实际字节数,然后进行比较和截取操作。这一过程在实际开发中十分常见,无论是前端界面校验还是后端数据接收与存储时,都是需要考虑到的细节。通过上述...
本实例提供了一种方法,用于根据字节长度来截取字符串,并在必要时添加省略号,以达到对过长字符串的适配。 `autoAddEllipsis`函数是主要的接口,它接收两个参数:`pStr`表示待处理的字符串,`pLen`表示要截取的...
总结来说,文档中提供的JavaScript示例代码,通过合理的长度计算方法和字符串截取逻辑,实现了对中文和英文混合字符串的有效处理,满足了在文本输入框中限制字符长度的需求,特别是对于需要处理中文输入的场景。...
在JavaScript中,处理中英文混合的字符串截取是一项常见的任务,尤其在网页开发中,比如显示摘要、控制输入长度等场景。由于JavaScript的内置方法`String.prototype.length`只能计算Unicode字符的数量,对于中文字符...
例如,`cutstr()`函数用于截取字符串,它考虑了中文字符占两个字节的情况,确保截取后的字符串不会出现乱码。而`getHost()`函数则用于获取URL的主机部分,这对于处理网络请求或构建链接非常有用。`trim()`方法是一个...
6. 总结:通过上述方法和示例,我们可以看到,在JavaScript中实现中英文混合文本溢出友好截取功能时,需要考虑到中英文字符在空间占用上的差异,利用合适的字符串处理方法和正则表达式技术,封装一个功能强大的字符...
然后,通过使用字符串的`replace`方法将所有非单字节字符替换为某个特定字符(如双下划线`__`),最终通过计算替换后字符串的长度来得到原始字符串中中文字符的数量。 进一步,文档中还提到了一个额外的小技巧,...
- **双字节字符计数**:自定义字符串方法,计算双字节字符数量。 - **HTML标签去除**:使用正则表达式去除HTML字符串中的标签。 - **空白字符移除**:字符串trim方法的自定义实现,移除前后空白字符。 - **IP地址...
在函数内部,首先计算出文本框的当前长度`str.length`,然后调用`getStrleng`函数来计算字符串的实际长度,考虑到中文字符占用两个字节的情况。如果用户输入的字符超过了最大限制的两倍(考虑到全英文和全中文的情况...
这个`gotTopic`函数会更准确地计算字符串的字符数,包括多字节的中文字符,从而确保正确截取。 通过以上步骤,您可以有效地解决网页中长标题的显示问题,使其在保证信息传递的同时,也能保持页面的良好布局。
// 将验证码图像转换为Base64字符串 byte[] captchaImageBytes = ...; // 生成的验证码图像字节数组 String base64Captcha = Base64.getEncoder().encodeToString(captchaImageBytes); return base64Captcha; } ...