如何使用IndexOf查找完全匹配?

时间:2015-03-19 01:14:29

标签: c# .net indexof

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

blahblahEAPPWForms
EAPPWTextblah blah
EAPPWblah

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

2 个答案:

答案 0 :(得分:1)

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

开头的作品

所以,这是如何获得两者。 假设您正在寻找单词"blah"而只找"blah"这个单词 你应该能够使用正则表达式找到它。 这个正则表达式在字符串的开头,中间,末尾搜索"blah",如果它是整个字符串。

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

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

如果你想获得“blahaaa”如果“blah”不存在,那么你可以检查结果是否为-1然后执行indexOf。

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

答案 1 :(得分:0)

如果您正在寻找没有其他文本的实例,那么非常简单:

  //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;