我如何使用for循环遍历字符串中给定短语的每次迭代?例如,假设我有以下字符串:
嘿,这是一个示例字符串。字符串是一组字符。
每当有“是”时,我想将其后面的三个字符分配给一个新字符串。我理解如何做这个ONCE,但我想弄清楚如何使用for循环来遍历同一个单词的多个实例。
答案 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个字符。每场比赛有两组:
第1组:其中包含下一个thress字符
匹配匹配= re.Matches(“嘿,这是一个示例字符串。字符串是一个字符集合。”); StringBuilder sb = new StringBuilder(); foreach(比赛中匹配m) { sb.Append(m.Groups 1值); }
使用Regex比循环字符串的字符要快得多。如果您在正则表达式构造函数中使用RegexOptions.Compiled,则更多:Regex Constructor (String, RegexOptions)