巧用正则实现indexOf,以及字符串当中字母取反
2020-03-31 本文已影响0人
lessonSam
/* 如何把字符串当中的大小写取反 */
let str = 'sanMuLessON 很帅!*100哈哈';
for (let i = 0; i < str.length; i++) {
// 这种方法很low 不写了
}
str = str.replace(/[a-zA-Z]/g, content => {
// =>content 每一次正则匹配的范围
// 验证大小写 通过 字符串的方法UperCase
// 通过ascII码 =》content.chatCodeAt()>=65&&content.chatCodeAt()<=90
return content.toUpperCase() === content
? content.toLowerCase()
: content.toUpperCase();
});
console.log('====================================');
console.log(str);
console.log('====================================');
/* 实现一个字符串匹配算法,从字符串S 当中检测是否存在字符串T,如存在则返回起始位置,若不存在则返回-1 前提 不能使用 indexOf/includes 等内置的方法,你会如何处理呢 */
let S = 'lesson is superman';
let T = 'isA';
~(function() {
/* 1. 循环原始字符串中的每一项,让每一项都往后截取t.length个位置,然后heT 进行比较 如果不一样 则继续比较 一样就返回当前位置 太low */
// function myIndexOf(T) {
// //=>this:S
// let lenT = T.length;
// let lenS = this.length;
// if (lenT > lenS) return (res = -1);
// let res = -1;
// for (let i = 0; i <= lenS - lenT; i++) {
// if (this.substr(i, lenT) === T) {
// res = i;
// break;
// }
// }
// return res;
// }
function myIndexOf(T) {
let reg = new RegExp(T),
res = reg.exec(this);
return (res = res === null ? -1 : res);
}
String.prototype.myIndexOf = myIndexOf;
})();
console.log(S.myIndexOf(T));