javascript实现stringbuffer操作
2016-04-27 15:54
573 查看
function StringBuffer(){ if(this instanceof StringBuffer){ this.arr = []; this.length = 0; this.add = this.append = function(v){ if(v!==null&&v!==undefined){ var vt = v.toString(); this.length += vt.length; this.arr.push(vt); } return this; }; this.clear = this.empty = function(){ this.arr = []; this.length = 0; return this; }; this.valueOf = this.toString = function(v){ if(!!v){ return this.arr.join(v); }else{ return this.arr.join(""); } }; this.substring = function(){ return this.valueOf().substring(arguments[0],arguments[1]); }; this.removeLast = function(){ if(this.length>0){ var tmp = this.arr[this.arr.length-1].toString(); if(tmp.length==1){ this.arr.pop(); }else{ this.arr[this.arr.length-1] = tmp.substring(0, tmp.length-1); } this.length -= 1; } return this; }; this.removeLastAppend = this.removeLastAdd = function(){ if(this.length>0){ var s = this.arr.pop(); this.length -= s.length; } return this; }; this.charAt = function(index){ if(typeof index!=="number"){ throw new Error("\u671f\u671b\u662f\u6570\u5b57\u7c7b\u578b\uff0c\u7ed3\u679c\u662f\u5176\u4ed6\u7c7b\u578b!"); } return this.valueOf().charAt(index); } this.replace = function(start, end, str){ if(start>=end) throw new Error("\u53c2\u6570\u6709\u8bef"); //参数有误 var tmp = this.valueOf(); tmp = tmp.substring(0, start)+str+tmp.substring(end); this.empty().append(tmp); return this; } }else{ return new StringBuffer(); } };