var StringUtils = {
strLen: function (str) {
var len = 0;
for (var i = 0; i < str.length; i++) {
if (str.charCodeAt(i) > 255 || str.charCodeAt(i) < 0) len += 2;
else len++;
}
return len;
},
strToChars: function (str) {
var chars = new Array();
for (var i = 0; i < str.length; i++) {
chars[i] = [str.substr(i, 1), this.isCHS(str, i)];
}
return chars;
},
isCHS: function (str, i) {
if (str.charCodeAt(i) > 255 || str.charCodeAt(i) < 0) return true;
else return false;
},
subCHString: function (str, start, end) {
var len = 0;
var result = "";
var charsArray = this.strToChars(str);
for (var i = 0; i < str.length; i++) {
if (charsArray[i][1]) len += 2;
else len++;
if (end < len) return result;
else if (start < len) result += charsArray[i][0];
}
return result;
},
subCHStr: function (str, start, length) {
return this.subCHString(str, start, start + length);
}
};
// Usage example:
var str = "你好,世界!Hello, World!";
console.log(StringUtils.strLen(str)); // Output: 27
console.log(StringUtils.subCHStr(str, 0, 5)); // Output: "你好,"
参考:
JavaScript截取中英文字符串