需求: 所有非ASCII码算2个字符长度, ASCII码算1个字符长度, 进行字符串的截取
/**
* @param begin 截取开始的索引
* @param num 截取的长度
*/
String.prototype.chinesesubstr = (function(begin, num) {
var ascRegexp = /[^/x00-/xFF]/g, i = 0;
while(i < begin) (i ++ && this.charAt(i).match(ascRegexp) && begin --);
i = begin;
var end = begin + num;
while(i < end) (i ++ && this.charAt(i).match(ascRegexp) && end --);
return this.substring(begin, end);
});
用法:
将上面代码置于调用之前.
示例:
'中华人民共和国China万岁'.chinesesubstr(3, 10);
返回: "人民共和国C"
解释: "中华"4个字符, 从3开始, 也就是"华"字的第二个字符, 所以, 返回结果包含9个字符, 因为"华"取到半个字.
本文介绍了一种针对中文和非ASCII字符的特殊截取方法,该方法能够正确处理双字节字符,确保字符串被准确截断。通过JavaScript自定义函数实现,适用于需要精确控制字符长度的应用场景。
883

被折叠的 条评论
为什么被折叠?



