龙空技术网

JS原生字符串查找(面试题)

996不想进ICU的Coder 212

前言:

今天各位老铁们对“js检测字符串是否有某个值”大体比较注重,看官们都需要了解一些“js检测字符串是否有某个值”的相关知识。那么小编也在网摘上搜集了一些关于“js检测字符串是否有某个值””的相关文章,希望你们能喜欢,姐妹们一起来了解一下吧!

题目要求只是用最近基本的循环,完成字符串a 与字符串b 的匹配

实例: let a = ‘ab’

let b = ‘wwwwabc’

func(a,b) => //4 否则返回 -1

要求:代码效率高,简介,可复用强,不能使用现有的方法replace,slice,split,正则等等

妈耶~~写了半天没保存,鬼使神差的在开发者工具内使用了document.write

好吧,我再写一遍。

关于这个题目我是这么写的,如下:

/************************** 在不使用正则,slice,splice,replace等方法的情况下实现,判断字符串a 是否在字符串b内的方法,并返回在b中的索引 **********************************/ const match = (a, b) => { let arr = [] // 将字符串b拆分成数组 for (let i = 0; i < b.length; i++) { arr.push(b[i]) } let al = (a.length - 1) let idx = -1 for (let index = al; index < arr.length; index++) { // let str2 = arr[index -1] + arr[index] let str2 = _format(arr, index, al) if (str2 === a) { // alert(, str2) idx = index - 1 break } } return idx } function _format(arr, index, al) { // 入参为 arr => 需要匹配的数组 index=>开始匹配的索引 al=>将要匹配的字符串长度向前推al个索引,所以al是a字符串长度减一 let str = '' for (let i = al; i >= 0; i--) { str += arr[index - i] } return str } console.log(`匹配的结果是:${match('io', 'asasioasd')}`)

运行一下:

使用js方法实现上述问题String对象的方法

方法一: indexOf() (推荐)

var str = "123";console.log(str.indexOf("3") != -1 ); // trueindexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果要检索的字符串值没有出现,则该方法返回 -1.indexOf 会直接返回索引,但是他只会返回第一次查找到的结果//例如 str = 'hahaha'str.indexOf('ha') ---> 0//处理了上述情况只需要将match方法改一下const match = (a, b) => { let arr = [] for (let i = 0; i < b.length; i++) { arr.push(b[i]) } let al = (a.length - 1) let idx = [] for (let index = al; index < arr.length; index++) { // let str2 = arr[index -1] + arr[index] let str2 = _format(arr, index, al) if (str2 === a) { // alert(, str2) idx.push(index - 1) } } return idx }console.log(`匹配的结果是:${match('ha', 'haheihaheiooaha')}`)// 匹配的结果是:0,5,13// 当然这个还是存在很大问题,处理的时候并没有将 ha 作为一个字段,这个嘛, 容我想想

方法二: search()

var str = "abcd";console.log(str.search("b")); // 1//search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。如果没有找到任何匹配的子串,则返回 -1,与indexOf一致

方法三:match()

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。

stringObject.match(searchvalue)stringObject.match(regexp)

参数描述searchvalue必需。规定要检索的字符串值。regexp必需。规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。

var str="Hello world!"document.write(str.match("world") + "<br />")---输出 world

多个返回

str = 'hahaha'reg = RegExp(/ha/g)---输出['ha',''ha,'ha']
正则匹配
var str = "abcd";var reg = RegExp(/b/g);console.log(reg.test(str)); // true

//exec()

var str = "abcd";var reg = RegExp(/a/);reg.exec(str) --- true

先这样吧,后期再补,写代码去了。

标签: #js检测字符串是否有某个值