javascript String.indexOf实现
群里abcd提出问题,现在有以下三个实现,欢迎大家参与(注意,为了兼容IE6,不能使用str[i],要用str.charAt(i);不能使用slice,replace等原生函数):
GrayZhang的实现
String.prototype.substring = function(start, length) { var array = []; for (var i = start; i
我的实现:
//by 司徒正美 2011.8.18 String.prototype.indexOf = function(sub){ var a = sub.charAt(0),an = sub.length,n = this.length; if(n == an){ return this == sub ? 0 : -1 } if(n
abcd的实现:
function indexOf(s, t) { if (s.length) { var back = false; var i = 0; for (var j = 0; j < t.length; ++j) { if (s.charAt(i) != t.charAt(j)) { do { if (++i >= s.length) return -1; if (s.charAt(i) == t.charAt(j)) { if (j) back = true; break; } } while (true); } if (back) { for (var k = 1; k <= j; k++) if (s.charAt(i - k) != t.charAt(j - k)) continue; back = false; } } return i - j + 1; } return t.length && -1; }
http://proto.layer51.com/d.aspx?f=32 //--------------------------------------------------------------------------- String.prototype.charAt = function(index){ return(substring(this, index+1, 1)); } String.prototype.concat = function(){ var r = this.toString(); for (var i=0; i= 0) && (substring(this, i--, size) != sub)); return (i == -1 ? -1 : (i)); } String.prototype.slice = function(s, e){ return(substring(this, s+1, e-s)); } String.prototype.split = function(d){ if (d != null){ var r = new Array(); var size = this.length; var c = 0; var n = 0; if (d != ""){ for (var i=0; i96 && upNo223 && upNo64 && upNo191 && upNo