【发布时间】:2016-06-22 03:30:24
【问题描述】:
我有一个作业问题,我需要使用正则表达式和 LINQ 来提取给定字符串数组中的子字符串索引并将它们打印出来。更具体地说,问题是这样的:
为一个字符串编写一个正确、优雅和高效的扩展方法,该方法确定(使用正则表达式和 LINQ)来确定该字符串是否包含“ou”或“in”作为子字符串,然后返回开始索引如果存在任何索引,则返回 true,如果没有有效索引,则返回 false。注意:确保在索引数组中放置一个 -1 的标记。
这是我目前写的代码
public static void Main()
{
Regex regex1 = new Regex(@"ou", RegexOptions.IgnoreCase);
Regex regex2 = new Regex(@"in", RegexOptions.IgnoreCase);
string[] sData = new string[] {"Sour", "Candy", "apple",
"Hotdog", "Jumping", "Pompadour", "Insane"};
var selected2 = from strings in sData
let matches2 = regex2.Match(strings)
select matches2;
var selected1 = from strings in sData
let matches = regex1.Match(strings)
select matches;
foreach (var match in selected1)
{
WriteLine($"{match.Index}");
}
WriteLine();
foreach (var match in selected2)
{
WriteLine($"{match.Index}");
}
ReadKey(true);
}
我遇到的问题是,foreach 打印出一个全为零的数组,其中没有匹配项以及匹配项的位置,它打印出它在字符串中的位置的索引,这很好,但问题似乎在没有匹配项的地方需要 -1 而不是零。这当然是有道理的,因为如果匹配为零怎么办?另外,如果索引存在,我也不知道如何使它返回 true,否则返回 false。如果有人擅长 LINQ,我将非常感谢您的帮助!
【问题讨论】: