我如何使用 IndexOf 找到完全匹配项?

How can i use IndexOf to find an exact match?

我正在尝试使用 IndexOf 查找字符串段的位置。但字符串可能如下所示:

blahblahEAPPWForms
EAPPWTextblah blah
EAPPWblah

上面的例子可以是任意顺序,但有时我可能只是在寻找"EAPPW"本身,它可能根本不存在。但是如果 "EAPPWText" 或 "EAPPWForms" 先出现,我得到它的索引。

如果您只查找没有其他文本的实例,则非常简单:

  //Check if it's the whole string
  if(str == "EAPPWText")
     return 0;

  //Check if it's in the start or end
  int nIndex = str.IndexOf("EAPPWText" + " ");
  if(nIndex >= 0)
         return nIndex;

  //Check if it's the LAST word
  nIndex = str.IndexOf(" " + "EAPPWText" );
  return nIndex;

你的问题有点令人困惑,因为它并没有真正解释你是否只想一直获取 "EAPPW" 字符串,或者如果它存在和不存在你是否想要获取它'你得到任何以 "EAPPW"

开头的片段

所以,这是同时获得两者的方法。 假设您要查找单词 "blah" 并且只查找单词 "blah" 你应该能够使用正则表达式来找到它。 此正则表达式搜索 "blah" 在字符串的开头、中间、结尾以及是否是整个字符串。

搜索方法将return第一次出现的索引。

x = "this is blah";
reg = /^blah$|^blah\s+|\s+blah\s+|\s+blah$/;
var location = x.search(reg);

if you want to get "blahaaa" if "blah" doesn't exist, then you can check if the result is -1 then do indexOf.

if(location === -1)
{
   location = x.indexOf("blah");
}