Javascript str.IndexOf在以“分隔”分隔的字符串组合上失败;“空间”;

Javascript str.IndexOf在以“分隔”分隔的字符串组合上失败;“空间”;,javascript,jquery,Javascript,Jquery,我有一个Javascript函数,如下所示。我可以看到文档中的单词是用空格隔开的。知道为什么会失败吗 var txt=$(“tr.trofinterest:first”).text().toUpperCase()//甚至尝试删除空白字符 //.replace(“,”).replace(“\r”,”).replace(“\n”,”) //和各种正则表达式组合,但下面的函数失败 如果(txt.indexOf(“两个字”)>=0){ //在这里做某事//但这是返回错误的 console.log(“发

我有一个Javascript函数,如下所示。我可以看到文档中的单词是用空格隔开的。知道为什么会失败吗

var txt=$(“tr.trofinterest:first”).text().toUpperCase()//甚至尝试删除空白字符
//.replace(“,”).replace(“\r”,”).replace(“\n”,”)
//和各种正则表达式组合,但下面的函数失败
如果(txt.indexOf(“两个字”)>=0){
//在这里做某事//但这是返回错误的
console.log(“发现两个单词在一起”);
}
//但是下面的语句在所有情况下都返回true
如果(txt.indexOf(“两个”)>=0&&txt.indexOf(“单词”)>=0){
log(“单词存在于句子中,我可以看到它们并排被空格隔开”)
}
console.log(txt)//打印“此tr包含两个有趣的单词,并且单词并排”

本tr包含两个有趣的单词,并且单词并排排列

因此,基本上空白字符不会与字符串混淆,Firefox不会准确显示字符串

我必须首先使用

txt = txt.toUpperCase().replace(/\s/g, '+'); 
// this gives better visual represntation of the problem
do {
 txt = txt.replace("++", '+'); filter out mutiples to single
   }
while (txt.indexOf("++") >= 0);
if(txt.indexOf("TWO+WORDS")>=0){
console.log("Hey! Hey! Ho! Ho! Not cloning your grandpa has got to go!!!")
}

编辑以进行否决投票。我只对
“两个+单词”
感兴趣,而不是整个字符串。事实上,如果原始字符串中有两个+单词,则效果更好。有时不需要过度设计解决方案。无论如何,我的答案提供了一种解决问题的方法。找到解决方案的第一步。

仅仅因为字符串包含
“两个”
,并且还包含
“单词”
,这并不意味着它包含
“两个单词”
。它可以包含
“两个单词”
,或者
“两个单词”
,或者
“两个单词”
,或者
“两个单词”
(令人惊讶的是,注释格式使该文本看起来只有一个空格),或者……您还可以验证字符是普通空格,而不是某些Unicode字符,除了第一条评论之外?@T.J.Crowder不敢相信我在评论结束时没有看到
“TWORDS”
:)@JamesThorpe-我只是没那么聪明而已。;)还要注意,
indexof()
indexof()
不同。我假设这只是问题中的一个错误,因为您声明在控制台中获得了一个输出,如果本地副本中存在该错误,您就不会得到该输出。这种黑客行为导致了一个非常糟糕的“解决方案”。如果将来文本将包含
+
,该怎么办?如果失败的原因被这种方法掩盖了,并且当文本在
td
中发生变化时会再次出现,那该怎么办?我只对“两个+单词”感兴趣,而不是整个字符串。事实上,如果原始字符串中有两个+单词,则效果更好。有时不需要去想问题。如果你所显示的代码对你有效,那么如果你使用
.replace(/\s/g',)
和do
do{txt=txt.replace(“,”);}而(txt.indexOf(“”)>=0)
甚至可以在使用时去掉do,使用
。替换(/\s+/g',)
。但是用
+
替换空格来查找
两个单词
确实是一种容易出错的“解决”问题的方法。@t.niese如果遇到“两个 Words”怎么办字符串永远都没有完美的解决方案。你将需要一个成熟的文字处理/字典程序来实现这样一个解决方案,这对于我需要解决的问题来说是太过分了。甚至Visual Studio有时也会出现字符串和字符格式错误。如果您在此处展示的解决方案能够处理
两个 Words
,则
。替换(/\s+/g',)
txt.indexOf(“两个单词”)
也可以。如果您的解决方案不适用于
TWO Words
,那么您的解决方案比
有什么好处。请替换(/\s+//g',)