如何使用 for 循环遍历字符串中给定短语的每次迭代?例如,假设我有以下字符串:
嘿,这是一个示例字符串。字符串是字符的集合。
每次出现“is”时,我都想将它后面的三个字符分配给一个新字符串。我知道如何做到这一点,但我试图弄清楚如何使用 for 循环来遍历同一个单词的多个实例。
如果出于某种原因必须使用 for 循环,则可以将ja72提供的代码的相关部分替换为:
for (int i = 0; i < text.Length; i++)
{
if (text[i] == 'i' && text[i+1] == 's')
sb.Append(text.Substring(i + 2, 3));
}
不幸的是,我没有足够的声誉在此处将其添加为评论,因此将其发布为答案!
这是你想要的吗?
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})
然后使用正则表达式查找所有匹配项:Regex.Matches()。这将为is
在字符串中找到的每个返回一个匹配项,后跟 3 个字符。每场比赛有两组:
第 1 组:包括下一个字符
Matches matches = re.Matches("嘿,这是一个示例字符串。字符串是字符的集合。"); StringBuilder sb = new StringBuilder(); foreach(匹配 m 匹配){ sb.Append(m.Groups 1 .Value); }
使用 Regex 比遍历字符串的字符要快得多。如果您在您的正则表达式构造函数中使用RegexOptions.Compiled则更多:Regex Constructor (String, RegexOptions)