JavaScript 字符串处理:长度计算、字符转换与中文截取实现

作者:工具松鼠时间:2026-10-24 18:32:04浏览:535

本文介绍如何利用 JavaScript 的 prototype 属性扩展 String 对象,实现自定义字符串处理方法。通过 strLen 计算包含汉字的实际字节长度,利用 strToChars 和 isCHS 处理字符数组与汉字判断,最后提供 subCHString 和 subCHStr 函数安全截取中文字符串,避免乱码。

Prototype 机制与字符串扩展概述

Prototype 机制允许开发者为 JavaScript 内置类(如 String、Array 等)添加自定义 API。只需将包含这些扩展方法的 JS 文件嵌入页面,即可直接调用扩充后的功能,无需修改原始类定义。


具体实现代码如下:

字符串长度计算与字符处理实现String.prototype.strLen = function() {
var len = 0;
for (var i = 0; i < this.length; i++) {
if (this.charCodeAt(i) > 255 || this.charCodeAt(i) < 0) len += 2; else len ++;
} 
return len;
} 
//将字符串拆成字符,并存到数组中
String.prototype.strToChars = function(){
var chars = new Array();
for (var i = 0; i < this.length; i++){
chars[i] = [this.substr(i, 1), this.isCHS(i)];
} 
String.prototype.charsArray = chars;
return chars;
} 
//判断某个字符是否是汉字
String.prototype.isCHS = function(i){
if (this.charCodeAt(i) > 255 || this.charCodeAt(i) < 0)
return true;
else
return false;
} 
//截取字符串(从start字节到end字节)
中文字符串安全截取方法String.prototype.subCHString = function(start, end){
var len = 0;
var str = "";
this.strToChars();
for (var i = 0; i < this.length; i++) {
if(this.charsArray[i][1])
len += 2;
else
len++;
if (end < len)
return str;
else if (start < len)
str += this.charsArray[i][0];
} 
return str;
} 
//截取字符串(从start字节截取length个字节)
String.prototype.subCHStr = function(start, length){
return this.subCHString(start, start + length);
} 
实际应用示例与原型继承优势var li= document.getElementsByName("listtitle");
for(var i=0;i<li.length;i++)
{ 
li[i].innerHTML=li[i].innerHTML.subCHStr(0,28)+"...";
} 

Prototype 的核心作用在于实现原型对象的继承,其主要优势在于能够有效节省内存空间,避免为每个实例重复创建相同的属性和方法。

作者最新文章