使用indexOf检查Javascript子字符串或使用正斜杠搜索日期字符串/

使用indexOf检查Javascript子字符串或使用正斜杠搜索日期字符串/,javascript,string,date,Javascript,String,Date,我很惊讶没有找到任何关于这个的帖子,我一定错过了一些非常琐碎的东西。我有一个小JavaScript函数来检查字符串是否匹配对象的属性。简单的东西,对吗?除包含正斜杠的字符串外,它可以轻松处理所有字符串 "‎04‎/‎08‎/‎2015‎".indexOf('4') // returns 2 :good "‎04‎/‎08‎/‎2015‎".indexOf('4/') // returns -1 :why? 同样的问题也出现在.search()函数中。我在处理日期字符串时遇到了这个问题 请注意,

我很惊讶没有找到任何关于这个的帖子,我一定错过了一些非常琐碎的东西。我有一个小JavaScript函数来检查字符串是否匹配对象的属性。简单的东西,对吗?除包含正斜杠的字符串外,它可以轻松处理所有字符串

"‎04‎/‎08‎/‎2015‎".indexOf('4') // returns 2 :good
"‎04‎/‎08‎/‎2015‎".indexOf('4/') // returns -1 :why?
同样的问题也出现在.search()函数中。我在处理日期字符串时遇到了这个问题


请注意,出于性能原因,我不想使用基于正则表达式的解决方案。提前谢谢你的帮助

字符串中包含不可见的Unicode字符。“从左到右标记”(十六进制200E)出现在两个斜杠字符周围以及字符串的开头和结尾


如果您在浏览器控制台上键入代码而不是剪切和粘贴,您将看到它按预期工作。

有趣的是,我确实将粘贴的字符串复制到了VisualStudio控制台窗口中。我检查了是否在控制台上键入类似“04/”.indexOf('4/')的字符串,然后它给出了正确的结果。那我怎么克服这个问题呢?我有一个Date()对象,在该对象上调用Date.toLocaleString()。我不想在这个字符串上搜索子字符串。您是否建议在我使用indexOf()方法之前删除生成的不可见unicode字符?@lawc什么平台会给您一个字符串,其中包含这些字符作为
.toLocalString()
的返回值?你在什么地方?我的浏览器没有给我任何这样的特殊字符(在
en_US
)。我在Windows平台上,我的语言环境是en GB。@lawc奇怪。您可以使用
date.tolocalString().replace(/\u200E/g,“”)
删除不可见字符。我可以确认,在替换unicode字符后,它是否按预期工作。但是,如果.replace()成为开销,我会使用它。我的方法将在每个键盘笔划上被调用,因为它是搜索过滤器功能的一部分。我会接受你的回答,因为它解决了最初的问题,谢谢你。但我将感谢任何进一步的建议,以提高子字符串在包含此类不可见unicode字符的字符串上的搜索性能。