文字列で単語を検索したい。
ただし、検索した単語が他の単語の中にある場合は、結果を取得したくありません。あれは
私はこれが数字7(文字fのインデックス)を返すことを望みます:
findWord( "Potato for you"、 "for")
しかし、私はこれが-1を返すことを望みます(つまり、見つかりません)
findWord( "Potato for you"、 "または")
を使用するとIndexOf
、「for」という単語内に部分文字列「or」が見つかります。
これを行う簡単な方法はありますか?
char[] terminationCharacters = new char[] { '\n', '\t', ' ', '\r' };
//get array with each word to be taken into consideration
string[] words= s.Split(terminationCharacters, StringSplitOptions.RemoveEmptyEntries);
int indexOfWordInArray = Array.IndexOf(words, wordToFind);
int indexOfWordInS = 0;
for (int i = 0; i <= indexOfWordInArray; i++)
{
indexOfWordInS += words[i].Length;
}
return indexOfWordInS;
ただし、単語間に複数のスペースがある場合、これは明らかに機能しない可能性があります。この一見単純なことを行うための事前に構築された方法はありますか、それとも単に使用する必要がありRegex
ますか?
正規表現を使用できます。
var match = Regex.Match("Potato for you", @"\bfor\b");
if (match.Success)
{
int index = match.Index;
...
}
\b
単語の境界を示します。
インデックスは必要ないが、単語が文字列に含まれているかどうかを確認したい場合はIsMatch
、の代わりにブール値を返すを使用できますMatch
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加