JS获取字符串指定位置字符方法(史上最全,绝对干货)

这里以获取‘hello’字符串的第二个字符为例,首先我们定义一个变量: let str = 'hello'

方法一(字符串函数直接截取):

 这是最常规的方法,这三个函数可以截取字符串,但又有所不同。slice 和substring 的第一入参和第二入参表示截取的起始位置和结束位置,但是slice的入参允许为负,例如str.slice(-2,-1)代表截取str的倒数第二位字符。而substr的第一入参和第二入参表示截取的起始位置和截取的长度。大家尽量避免使用substr了,因为这个并非标准。

方法二(字符串可遍历特性):

字符串具有Iterator 接口,可以被for...of 循环遍历,所以也可以通过数组下标访问的形式获取指定下标的值。如str[1]就是本文的结果

方法三(解构赋值):

这里主要还是利用了字符串的数组特性,其次才是es6中解构赋值的写法,其中解构赋值的本质就是一个模式匹配,同时他允许左侧的其中一个模式匹配为空,所以我们才能拿到指定位置的字符。这种方式不推荐实际使用,只是展示一下有这种方法而已。以及说明一下解构的特点。

 方法四(正则匹配中的子匹配项$1,$2......):

正则表达式在exec执行的时候,其中的子匹配表达式(用中括号包起来的就是子匹配表达式)的值会根据他们出现在正则表达式中的顺序分别赋值给RegExp的$1,$2...以此类推

 方法五(正则匹配match结果):

字符串有match方法,结果是一个匹配的数组,RegExp实例的exec方法也返回了一个数组,其中数组中的第一个值表示整个正则表达式匹配的值,数组中的第二个值表示第一个子匹配表达式匹配的值,数组中的第三个值表示第二个子匹配表达式匹配的值,以此类推

方法六(正则具名匹配):

这和解构赋值一样是es6的新特性。这个相当于手动将子匹配表达式匹配到的值赋值给了一个你指定的变量上,而不再是RegExp上的$1,$2....上。注意写法就行: (?<var>), 你的所有具名项都会被添加到groups中,如果配合解构赋值,取值方式会更具可读性。

 

小结:

在上面几种方法中,方法二(字符串可遍历特性)是最简单的,毕竟取值方式和数组一样,也是最容操作的。方法一(字符串函数直接截取)和 方法六(正则具名匹配)也不错,这两种方法对于字符串获取任意位置的字符可以有更好的应变性。方法一只需要改变截取起始位置和结束位置就行,方法六只需要改变一下正则表达式就可以,例如现在我们需要获取‘hello’的第三个字符正则表达式如下: /.{2}(?<third>.)/。对于任何字符串的截取问题正则匹配都是可以做到的,同时$1,$2....的存在又给获取子匹配表达式的匹配值提供了捷径。

 其余的方法只是提供了一种取值的可能性。如果后期出现新的方法,本文还会持续更新。零散的知识比较容易被遗忘,如果能通过某种方式(例如本文通过一个简单的小问题汇总不同知识点)组织成一颗知识树,那么你的技术累积会比较耐磨。学也无涯,唯上下而求索。

  • 12
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以使用 JavaScript 的 `String.prototype.match()` 函数和 `RegExp` 对象来获取指定字符串在原字符串中出现的次数。 例如,如果要获取字符串 "the" 在另一个字符串 "The quick brown fox jumps over the lazy dog." 中出现的次数,您可以使用以下代码: ``` let str = "The quick brown fox jumps over the lazy dog."; let count = (str.match(/the/gi) || []).length; console.log(count); // 2 ``` 这段代码使用了 `match()` 函数和 `RegExp` 对象,它会在字符串中查找所有匹配的字符串。在这个例子中,使用了 `/the/gi` 正则表达式来查找所有的 "the",其中 `g` 表示全局搜索,`i` 表示忽略大小写。 然后,使用 `length` 属性获取匹配数组的长度,就可以得到 "the" 在字符串中出现的次数。 希望这能帮到您! ### 回答2: 在JavaScript中,获取字符串指定字符串出现的次数可以使用正则表达式的`match()`方法来实现。 方法如下: ```javascript function countOccurrences(string, substring) { // 使用正则表达式匹配字符串,设置全局匹配并忽略大小写 const regex = new RegExp(substring, 'gi'); // 使用match方法匹配字符串并返回匹配结果 const matches = string.match(regex); // 如果没有匹配项,返回0,否则返回匹配项的个数 return matches ? matches.length : 0; } // 示例用法 const string = 'Hello world, hello JavaScript!'; const substring = 'hello'; const count = countOccurrences(string, substring); console.log(count); ``` 以上代码中的`countOccurrences()`函数接收两个参数:字符串`string`和指定字符串`substring`。函数内部先创建了一个正则表达式对象`regex`,用来进行全局匹配,并忽略大小写。然后使用`match()`方法匹配字符串,将所有匹配的子字符串保存在`matches`数组中。最后,通过判断`matches`数组的长度来确定指定字符串在原字符串中出现的次数。 以上示例代码运行的结果会输出`2`,表示在字符串`'Hello world, hello JavaScript!'`中,字符串`'hello'`出现了2次。 ### 回答3: 在JavaScript中,有几种方法可以获取一个字符串指定字符串出现的次数。 方法一:使用正则表达式 可以使用正则表达式来匹配指定字符串出现的次数。可以使用match()方法来实现,该方法将返回一个数组,包含了匹配到的所有指定字符串。 示例代码如下: ```javascript var str = "hello world hello javascript hello"; var targetStr = "hello"; var regex = new RegExp(targetStr, "g"); var matches = str.match(regex); if (matches) { var count = matches.length; console.log(count); // 输出结果为 3 } ``` 方法二:使用split()方法 可以使用split()方法字符串根据指定字符串进行分割,然后通过得到的分割后的数组长度来获取指定字符串出现的次数。 示例代码如下: ```javascript var str = "hello world hello javascript hello"; var targetStr = "hello"; var count = str.split(targetStr).length - 1; console.log(count); // 输出结果为 3 ``` 需要注意的是,以上两种方法都可以获取指定字符串在原始字符串中出现的次数,但是匹配方法更加灵活,可以处理更复杂的情况,比如不区分大小写等。而切割方法则更加简洁,适用于简单的情况。根据实际需求选择使用哪种方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值