字符串中多次出现的文本

时间:2012-05-23 00:31:22

标签: c# string loops for-loop find

我如何使用for循环遍历字符串中给定短语的每次迭代?例如,假设我有以下字符串:

嘿,这是一个示例字符串。字符串是一组字符。

每当有“是”时,我想将其后面的三个字符分配给一个新字符串。我理解如何做这个ONCE,但我想弄清楚如何使用for循环来遍历同一个单词的多个实例。

3 个答案:

答案 0 :(得分:2)

如果你必须出于任何原因使用for循环,你可以用ja72替换code provided的相关部分:

for (int i = 0; i < text.Length; i++)
{
    if (text[i] == 'i' && text[i+1] == 's')
        sb.Append(text.Substring(i + 2, 3));
}

不幸的是,我没有足够的声誉在此处添加此评论,因此将其作为答案发布!

答案 1 :(得分:1)

这是你想要的吗?

    static void Main(string[] args)
    {
        string text=@"Hey, this is an example string. A string is a collection of characters.";

        StringBuilder sb=new StringBuilder();
        int i=-1;
        while ((i=text.IndexOf("is", i+1))>=0)
        {
            sb.Append(text.Substring(i+2, 3));
        }
        string result=sb.ToString();
    }


//result " is an a "

答案 2 :(得分:0)

你可以使用这样的正则表达式:

  Regex re = new Regex("(?:is)(.{3})");

此正则表达式查找为(?:is),并接受后三个字符(.{3})

然后使用正则表达式查找所有匹配项:Regex.Matches()。这将返回字符串中找到的每个is的匹配项,后跟3个字符。每场比赛有两组:

  • 组0:包括is和接下来的三个字符
  • 第1组:其中包含下一个thress字符

    匹配匹配= re.Matches(“嘿,这是一个示例字符串。字符串是一个字符集合。”);   StringBuilder sb = new StringBuilder();   foreach(比赛中匹配m)   {       sb.Append(m.Groups 1值);   }

使用Regex比循环字符串的字符要快得多。如果您在正则表达式构造函数中使用RegexOptions.Compiled,则更多:Regex Constructor (String, RegexOptions)