5

我有一个字符串,我希望使用 Linq 运行一个正则表达式来将我的字符串缩减为一个与我的 reg ex 匹配的较小的子字符串。

我目前的代码给出了错误

“char”不包含“Name”的定义,并且找不到接受“char”类型的第一个参数的扩展方法“Name”

我的代码:

string variable = result.Name.Select(r => regEx.Match(r.Name).Groups[2].ToString());

Result.Name是自定义类中包含的字符串。

我做错了什么?我的语法/理解有什么问题?

4

4 回答 4

20

你在寻找这样的东西吗?

string[] result = Regex.Matches(input, pattern)
                       .Cast<Match>()
                       .Select(match => match.Groups[2].Value)
                       .ToArray();
于 2012-05-17T14:51:01.153 回答
2

您正在调用Select单个字符串。Select将您的字符串视为一系列字符,因此r您的 lambda 表达式中的char.

如果您只想将一个字符串传递给正则表达式,并且只需要一个匹配项,那么您根本不需要 LINQ。打电话

string variable = regEx.Match(result.Name).Groups[2].ToString();

(我假设result.Name是您的单个字符串,基于您的示例代码。)

于 2012-05-17T14:47:43.820 回答
0

难道不应该

string variable = result.Select(r => regEx.Match(r.Name).Groups[2].ToString());

如果您在 Name 字段上运行 Select,您将在一个字符串上运行它,该字符串是一个 char 数组

于 2012-05-17T14:48:09.673 回答
0

这应该工作...

string result = result.Name.Select(@regEx => Regex.Match(match.Groups[2].ToString(), @regEx));
于 2013-11-22T10:36:12.270 回答