JavaScript 字符串怎么查找
大家在日常写网页小脚本时,肯定会遇到这种情况:做一个商品搜索功能,输入关键词后要从商品名称里找出匹配项;或者做一个用户留言板,要快速定位某条留言里的特定内容。这些场景,都离不开JavaScript里的字符串查找功能。其实不用把它想成复杂的编程术语,就像我们平时在手机备忘录里找文字一样,JS的字符串查找,就是给字符串做“内容定位”,今天就用大家熟悉的例子,把这个知识点讲明白。
最常用的“找得到就给位置”:indexOf()
如果我们想知道某段文字在字符串里的“第一个出现的位置”,就用这个方法,它就像我们翻书时,第一次看到目标文字的页码。举个例子,大家平时用的外卖APP,会显示“当前位置距离商家2.3公里,已接单”,如果想确认“已接单”这三个字有没有出现在状态里,就可以用这个方法。

比如写一段简单的代码:
`javascript
let orderStatus = "当前位置距离商家2.3公里,已接单";
let position = orderStatus.indexOf("已接单");
console.log(position); // 输出结果是12
`
这里的数字12,就是“已”字在字符串里的位置——注意哦,JS里的字符位置是从0开始数的,不是从1!就像我们排队,第一个人站在0号位,第二个在1号位,所以“已”是第13个字符,对应位置就是12。如果返回的结果是-1,就说明这段文字完全没找到,比如把查找的内容换成“已取餐”,就会返回-1,这个判断刚好可以用来做搜索的“没找到”提示,比如“抱歉,没有匹配的订单状态”。
如果想从字符串的某个位置开始找,比如要跳过前10个字符,从第11个开始找,只要给indexOf加第二个参数就行,比如orderStatus.indexOf("已接单", 10),这样就不会去前面的内容里重复找,节省代码性能,就像翻书时指定从某一页开始找内容。
想找最后一个的话:lastIndexOf()
有时候我们不需要第一次出现的位置,而是要最后一次的,比如一篇文章里多次提到“咖啡”,想知道最后一次在哪,就用这个方法,相当于从字符串的末尾往回找。举个例子,做一个文章的关键词统计,比如一篇美食推文:
`javascript
let article = "今天的早餐是咖啡,配了一块蛋糕,下午再喝一杯咖啡提精神";
let lastCoffeePos = article.lastIndexOf("咖啡");
console.log(lastCoffeePos); // 输出结果是32
`
文章里两次提到“咖啡”,第一次在第2位,第二次在第32位,这个方法返回的就是最后一次的位置,适合需要定位内容最后出现位置的场景,比如做文章的“关键词最后出现位置标记”。
更灵活的“匹配查找”:includes()和search()
如果我们只是想知道“有没有”,不需要具体位置,就用includes(),它会直接返回布尔值——true或false,就像我们问朋友“你有没有见过我的钥匙”,朋友只会说“有”或“没有”。还是用订单状态的例子:
`javascript
let hasPaid = orderStatus.includes("已付款");
console.log(hasPaid); // 因为原内容是“已接单”,所以返回false
`
这个方法比indexOf更直接,不用判断位置是不是等于-1,代码更简洁。如果我们需要用“规则”来查找,比如找所有数字,或者大小写不敏感的内容,就用search(),它支持正则表达式,比如要找状态里的数字,代码可以写成orderStatus.search(/\d/),就像我们找“所有带数字的内容”,适合更复杂的查找需求。
这些方法覆盖了日常开发中80%的字符串查找场景,不用记复杂的规则,只要记住:要位置用indexOf/lastIndexOf,要“有没有”用includes,要规则匹配用search,就足够应付大部分需求了。