巧用正则实现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));
上一篇下一篇

猜你喜欢

热点阅读