如下代码纯属我的写着玩。为了加深理解和熟悉字符串提供的方法的思路。可是我发现我写完以后仍是忘了。没啥鸟用。分享给你们指点。面试
你们说若是面试的话,让面试者写一个字符串底层方法实现思路。是否能快速写出来。数组
/*
* charAt()方法
* 功能 : 返回指定位置的字符
* 参数 : 传递一个下标
* 官方使用
* var str = "abcdefg";
* str.charAt(2); //c
* str.charAt("CCCC"); //输入其余字符都默认返回下标为0的字符 输出a
* str.charAt(-1); //传递负值返回空字符串
*/
String.prototype.ycCharAt = function(){
var parma = arguments[0];
var returnStr = parma >= 0 ? this[parma] : !isNaN(parma) ? "" : this[0];
return returnStr;
}
复制代码
/*
* concat()方法
* 功能 : 用于链接两个字符串
* 参数 : 传递一个字符串
* 官方使用
* var str = "abcdefg";
* str.concat(123); //"abcdefg123"
* str.concat([1,2,3]); //"abcdefg1,2,3"
* str.concat({name:"123"}); //"abcdefg[object Object]"
*/
String.prototype.ycConcat = function(){
return this + arguments[0];
}
复制代码
/*
* slice() 方法
* 功能 : 截取字符串。
* 参数 : 第一个参数是子字符串的开始位置,第二个参数是子字符串的结束位置(不含该位置)
* 注意 :
* 1:第一个参数不能大于第二个参数的值 不然返回空
* 2:若是参数是负值。当参数是负数时候 字符串长度会默认加上负数
* 官方使用
* var str = "abcdefg";
* str.slice(1); //"bcdefg"
* str.slice(1,4); //"bcd"
* str.slice(1,-4); //结束位置就至关于 字符串长度7+-4 = 3 === slice(1,3) = bc
* str.slice(-3,-4); //""
*/
String.prototype.ycSlice = function(){
var _str = "";
//获取开始位置
var _start = arguments[0] >= 0 ? arguments[0] : this.length+arguments[0] ;
//获取结束位置
var _end = arguments[1] >= 0 ? arguments[1] : this.length+arguments[1] ;
for(var i=0;i<this.length;i++){
if(i >= _start && i < _end){
_str += this[i];
}
}
return _str;
}
复制代码
/*
* substring() 方法
* 功能 : 截取字符串。若是参数是负值。当参数是负数或者时候 字符串长度会默认加上负数
* 参数 : 第一个参数是子字符串的开始位置,第二个参数是子字符串的结束位置(不含该位置)
* 注意 :
* 1:第一个参数不能大于第二个参数的值 不然返回空
* 2:当传递不是数字则默认转换为0
* 官方使用
* var str = "abcdefg";
* str.substring(1); //"bcdefg"
* str.substring(1,4); //"bcd"
* str.substring(1,-4); //结束位置就至关于 字符串长度substring(1,0) = b
* str.substring(-3,-4); //""
*/
String.prototype.ycSubstring = function(){
var _str = "";
//获取开始位置
var _start = arguments[0] >= 0 ? arguments[0] : 0 ;
//获取结束位置
var _end = arguments[1] >= 0 ? arguments[1] : 0 ;
for(var i=0;i<this.length;i++){
if(i >= _start && i < _end){
_str += this[i];
}
}
return _str;
}
复制代码
/*
* substr() 方法
* 功能 : 截取字符串。若是参数是负值。当参数是负数或者时候 字符串长度会默认加上负数
* 参数 : 第一个参数是子字符串的开始位置,第二个参数是子字符串的长度
* 注意 :
* 1:第一个参数是负值。当参数是负数时候 字符串长度会默认加上负数
* 2:第二个参数当传递不是数字则默认转换为0
* 官方使用
* var str = "abcdefg";
* str.substr(1); //"bcdefg"
* str.substr(1,4); //"bcd"
* str.substr(1,-4); //结束位置就至关于 字符串长度substring(1,0) = b
* str.substr(-3,-4); //""
*/
String.prototype.ycSubstr = function(){
var _str = "";
//获取开始位置
var _start = arguments[0] >= 0 ? arguments[0] : this.length+arguments[0];
//获取结束位置
var _end = arguments[1] >= 0 ? arguments[1] : 0 ;
for(var i=0;i<this.length;i++){
if(i >= _start && i < (_start+_end)){
_str += this[i];
}
}
return _str;
}
复制代码
/*
* indexOf() 方法
* 功能 : 返回指定字符在当前字符串第一次出现的位置。
* 参数 : 第一个参数:匹配的字符串 第二个参数 :从哪一个位置开始匹配
* 官方使用
* var str = "abcdefga";
* str.indexOf("a"); //"0"
* str.indexOf("a",2); //"7"
* str.indexOf(1); //-1
*/
String.prototype.ycIndexOf = function(){
var _parma = arguments[0];
var _start = arguments[1] || 0;
var _index = -1;
for(var i=_start;i<this.length;i++){
if(this[i] == _parma){
_index = i;
return _index;
}
}
}
复制代码
/*
* lastIndexOf() 方法
* 功能 : 返回当前字符串最后一个匹配的字符索引
* 参数 : 第一个参数:匹配的字符串 第二个参数 :从哪一个位置开始匹配
* 官方使用
* var str = "abcdefga";
* str.lastIndexOf("a"); //"7"
* str.lastIndexOf("a",2); //"0"
* str.lastIndexOf(1); //-1
*/
String.prototype.ycLastIndexOf = function(){
var _parma = arguments[0];
var _start = arguments[1] || this.length;
var _index = -1;
for(var i=_start;i >= 0;i--){
if(this[i] == _parma){
_index = i;
return _index;
}
}
}
复制代码