C# 字符串中多次出现文本

C# 字符串中多次出现文本,c#,string,loops,for-loop,find,C#,String,Loops,For Loop,Find,如何使用for循环遍历字符串中给定短语的每次迭代?例如,假设我有以下字符串: 嘿,这是一个示例字符串。字符串是字符的集合 每次出现“是”时,我都想把它后面的三个字符分配给一个新字符串。我知道该怎么做一次,但我正在试图弄清楚如何使用for循环遍历同一单词的多个实例。这就是您想要的吗 static void Main(string[] args) { string text=@"Hey, this is an example string. A string is a

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

嘿,这是一个示例字符串。字符串是字符的集合

每次出现“是”时,我都想把它后面的三个字符分配给一个新字符串。我知道该怎么做一次,但我正在试图弄清楚如何使用for循环遍历同一单词的多个实例。

这就是您想要的吗

    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 "
这是你想要的吗

    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 "

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

  Regex re = new Regex("(?:is)(.{3})");
此正则表达式查找is
(?:is)
,并获取接下来的三个字符
(.{3})

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

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

    Matches=re.Matches(“嘿,这是一个示例字符串。字符串是字符的集合。”); StringBuilder sb=新的StringBuilder(); foreach(匹配中的匹配m) { sb.追加(m.组值); }


使用正则表达式比循环遍历字符串的字符快得多。如果在正则表达式构造函数中使用,则更为重要:

您可以使用如下正则表达式:

  Regex re = new Regex("(?:is)(.{3})");
此正则表达式查找is
(?:is)
,并获取接下来的三个字符
(.{3})

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

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

    Matches=re.Matches(“嘿,这是一个示例字符串。字符串是字符的集合。”); StringBuilder sb=新的StringBuilder(); foreach(匹配中的匹配m) { sb.追加(m.组值); }

使用正则表达式比循环遍历字符串的字符快得多。如果在正则表达式构造函数中使用,则更为重要:

如果出于任何原因必须使用for循环,则可以将by ja72的相关部分替换为:

for (int i = 0; i < text.Length; i++)
{
    if (text[i] == 'i' && text[i+1] == 's')
        sb.Append(text.Substring(i + 2, 3));
}
for(int i=0;i
不幸的是,我没有足够的声誉在这里添加这一评论,因此发布它作为一个答案

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

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

不幸的是,我没有足够的声誉在这里添加这一评论,因此发布它作为一个答案

是否需要类似以下内容:string st=“嘿,这是一个示例字符串。字符串是字符的集合。”;st=st.替换(“is”,“is+3char”);var arrayOfSplittedSts=st.Split(新[]{“is+3char”},System.StringSplitOptions.None)?是否需要类似以下内容:string st=“嘿,这是一个示例字符串。字符串是字符的集合。”;st=st.替换(“is”,“is+3char”);var arrayOfSplittedSts=st.Split(新[]{“is+3char”},System.StringSplitOptions.None)?