/**
1、循环原始字符串的每一项,让每一项从当前位置向后截取 H.length 个字符,
然后和 Y 进行比较,如果不一样,继续循环;如果一样返回当前索引即可
**/
function myIndexOf(Y) {
  let lenY = Y.length,
    lenH = H.length,
    res = -1;
  if (lenY > lenH) return res;
  for (let i = 0; i <= lenH - lenY; i++) {
    if (this.substr(i, lenY) === Y) {
      res = i;
      break;
    }
  }
  return res;
}
String.prototype.myIndexOf = myIndexOf;
let H = 'fighting',
Y = 'ht';
console.log(H.myIndexOf(Y));
 
/**
2、正则处理
**/
function myIndexOf(Y) {
  // this:H
  let reg = new RegExp(Y),
    res = reg.exec(this);
  return res === null ? -1 : res.index;
}
String.prototype.myIndexOf = myIndexOf;
let H = 'fighting',
   Y = 'ht';
console.log(H.myIndexOf(Y));

实现一个字符串匹配算法,从字符串 H 中,查找 是否存在字符串 Y ,若是存在返回所在位置的索引,不存在返回 -1(不基于indexOf/includes方法)的更多相关文章

  1. 在stream流和byte[]中查找(搜索)指定字符串

    在 stream流 和 byte[] 中查找(搜索)指定字符串 这里注重看的是两个 Search 的扩展方法,一个是 stream 类型的扩展,另一个是 byte[] 类型的扩展, 如果大家有更好的“ ...

  2. 在某个目录下的所有文件中查找包含某个字符串的Windows命令

    findstr可以完成这个工作.   上面的命令表示,当前目录以及当前目录的所有子目录下的所有文件中查找"string"这个字符串. *.*表示所有类型的文件. /s 表示当前目录 ...

  3. 42.输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S, 如果有多对数字的和等于S,输出两个数的乘积最小的。

    输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S, 如果有多对数字的和等于S,输出两个数的乘积最小的. 这道题有很多烟雾弹: 首先如果有多对,最前面的两个数就是乘积最小的, ...

  4. 在LoadRunner中查找和替换字符串

    参考<Search & Replace function for LoadRunner>: http://ptfrontline.wordpress.com/2009/03/13/ ...

  5. [码海拾贝 之Perl]在字符串数组中查找特定的字符串是否存在

    前言 检索一个字符串是否存在于一个数组中, 最主要的想法应该就是对数组进行循环, 逐个推断数组的每一个元素值和给定的值是否相等. (在Java语言还能够把数组转成 List , 在 list 中直接有 ...

  6. [Matlab] 如何在矩阵中查找特定的字符串

    题目 A = {'abcd','efgh','ijkl'; 'bd3','skge','zxe2'}:怎样查找A中字符串的是否含有字符串"bd3",如有返回字符串所在的行号和列号. ...

  7. java实现在一个字符串中查找某个子字符串出现的次数

    public static void main(String[] args) { String a = "我爱我的祖国!!!"; String b = "爱"; ...

  8. 如何在目录中查找具有指定字符串的文件(shell)

    find /tmp/ -name test.txt | xargs grep "hello" 可以查找到tmp目录下文件名test.txt并包含字符串hello的文件.

  9. C语言 ,两个字符串参数,判断是否包含另一个字符串,返回所在位置

    char * cyp(char *s1,char *s2) { char *p = NULL; char *q = NULL; char *q1 = NULL; while(*s1!='\0') { ...

随机推荐

  1. RSA host key has changed

  2. 给bootstrap右边的菜单加上右键关闭

    <ul class="rightmenu"> <li data-type="closethis">关闭当前</li> < ...

  3. Python中range, np.arange, np.linspace的区别

    目录 range np.arange np.linspace range 特点 range()是python内置函数,指定开始值,终值和步长生成等差数列的一维数组 不包含终值 步长只能是整数,生成整数 ...

  4. sound of the genuine

    “There is something in every one of you that waits and listens for the sound of the genuine in yours ...

  5. MyCat水平分库

    一.什么是水平分库 将一张表水平切分到多个库中 1.1分片原则 1.需要分片的表是少数的 2.能不切分尽量不要切分 3.日志表可以采取归档方式 4.选择合适的切分规则和分片建,确保数据分片均匀,否则依 ...

  6. PAT-1079 Total Sales of Supply Chain (树的遍历)

    1079. Total Sales of Supply A supply chain is a network of retailers(零售商), distributors(经销商), and su ...

  7. Gym101630A Archery Tournament

    题目链接:https://vjudge.net/problem/Gym-101630A 题目大意: 有\(n\)个操作,每次输入\(t\) \(x\) \(y\)\((t=1,2; -10^9 \le ...

  8. 【MySQL】剖析MySQL读写分离技术

    主从技术的一个基本流程图: 如何实现主从复制的呢: MySQL  Master(主节点) 1>当一个请求来时,首先由[mysqld]写入到我们的主[data]中 2>然后[mysqld]将 ...

  9. Android中的成员变量与局部变量

    简单说一下吧, note:java中的成员变量就是c++中的全局变量 1.可以在全局范围内使用:局部变量只能在其定义的方法里使用. 2.成员变量可以不赋初值使用,调用时有系统的默认的初值,比如int类 ...

  10. JavaScript实现单向链表结构

    参考资料 一.什么是链表结构? 1.1.简介 链表和数组一样, 可以用于存储一系列的元素, 但是链表和数组的实现机制完全不同,链表中的元素在内存不是连续的空间,链表的每个元素由一个存储元素本身(数据) ...