浅谈 js 字符串 search 方法
这是一个很久以前的事情了,好像是安心兄弟在学习js的时候做的练习。
具体记不清了,今天就来简单分析下 search 究竟是什么用的。
从字面意思理解,一个是搜索字符串吧。
1 2 | var str = "123456789abcde" ; console.log( str.search( "abc" ) ); // 9 |
确实是搜索指定字符在一个字符串中出现的位置,如果不存在就返回 -1
可是这样就跟 indexOf 功能一样了,何必单独搞一个 search 出来呢?
1 2 3 4 5 | var str = "123456789abcde" ; console.log( str.search( "abc" ) ); // 9 console.log( str.indexOf( "abc" ) ); // 9 console.log( str.search( "xxx" ) ); // -1 console.log( str.indexOf( "xxx" ) ); // -1 |
点击右侧运行可查看输出结果。
其实区别在于 search 是强制正则的,而 indexOf 只是按字符串匹配的。
来看一个例子:
1 2 3 4 5 6 7 | var str = "123456789.abcde" ; // 比刚才多了一个 . 而已 console.log( str.search( "." ) ); // 0 因为正则 . 匹配除\n以外任意字符 console.log( str.indexOf( "." ) ); // 9 只能匹配字符 . console.log( str.search( "\\." ) ); // 9 相当于 new RegExp("\\.") console.log( str.indexOf( "\\." ) ); // -1 匹配字符 \. 所以不存在 console.log( str.search(/\./) ); // 9 正则匹配转以后的 . 字符 console.log( str.indexOf(/\./) ); // -1 相当于匹配字符串 "/\./" 所以不存在 |
这个例子可以很好的说明 search 强制正则匹配模式。
来看下 MDN 上是怎么说的吧《String.prototype.search()》
可以看到他给出的语法是 str.search(regexp) 格式,说明参数必须是正则,如果不是正则,也会调用 new RegExp(obj) 转为正则的。
好了,今天的分享就这些了。明天见。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述