句子中每个单词出现的索引

时间:2011-02-09 22:06:01

标签: c# regex

我想在下面的句子中找到每个单词“dear”出现的索引。这可以通过RegEx完成吗?如果是这样的话?

  

Hello DEAR Friend,这是一个包含单词dear重复的字符串;所以,亲爱的,如果你能告诉我每个亲爱的在句子中的位置,那就太棒了

5 个答案:

答案 0 :(得分:3)

尝试

foreach(Match m in Regex.Matches(mystring, "dear", RegexOptions.IgnoreCase))
{
   Debug.Writeline(m.Index);
}

这是它开始的角色的索引,如果这就是你的意思。

答案 1 :(得分:2)

我认为这就是你所需要的:

        string sentence = "Hello DEAR Friend, This is a string that contains repeititons of word dear; so my dear if you can keep count of word dear used, it will be great";
        Regex r = new Regex(@"\bdear\b", RegexOptions.IgnoreCase);
        foreach (Match m in r.Matches(sentence))
        {
            MessageBox.Show(m.Index.ToString());
        }

答案 2 :(得分:1)

试试这个:

        Regex r = new Regex("dear",RegexOptions.IgnoreCase);
        string target = "Hello DEAR Friend, This is a string that contains repeititons of word dear; so my dear if you can tell me where each dear is located in the sentence, it will be great";
        MatchCollection allMatches = r.Matches(target);

Match中的每个allMatches对象都将具有匹配位置的索引。

答案 3 :(得分:1)

我认为你不需要正则表达式,就像我喜欢它们一样,这个解决方案更容易:

int index = yourString.IndexOf("dear", StringComparison.OrdinalIgnoreCase);
while(index > -1)
{
    // Do whatever with the index here
    index = yourString.IndexOf("dear", index + 1, StringComparison.OrdinalIgnoreCase);
}

答案 4 :(得分:0)

另一种简单的方法是使用列表理解,如下所示:

string1 = "This is the first airplane that flies around the world in far less time than the people thought"
print [i for i, j in enumerate(string1.split()) if j == 'the']

上面的代码找到了单词""的所有出现。 split()函数将句子拆分为单词。