我有一个String,我希望使用Linq运行一个正则表达式来将我的字符串减少到一个与我的reg ex匹配的较小的子字符串。
我的代码目前给出了错误
'char'不包含'Name'的定义,也没有扩展名 方法'Name'接受'char'类型的第一个参数可以是 结果
我的代码:
string variable = result.Name.Select(r => regEx.Match(r.Name).Groups[2].ToString());
Result.Name
是自定义类中包含的字符串。
我做错了什么?我的语法/理解有什么问题?
答案 0 :(得分:19)
你在找这样的东西吗?
string[] result = Regex.Matches(input, pattern)
.Cast<Match>()
.Select(match => match.Groups[2].Value)
.ToArray();
答案 1 :(得分:2)
您在一个字符串上调用Select
。 Select
将您的字符串视为一系列字符,因此lambda表达式中的r
为char
。
如果你只想要一个字符串传递到你的正则表达式,而你只想要一个匹配,那么你根本就不需要LINQ。只需致电
string variable = regEx.Match(result.Name).Groups[2].ToString();
(我假设result.Name
是您的单个字符串,基于您的示例代码。)
答案 2 :(得分:0)
不应该是
string variable = result.Select(r => regEx.Match(r.Name).Groups[2].ToString());
如果在Name字段上运行Select,则在字符串上运行它,该字符串是char
的数组答案 3 :(得分:0)
这应该有用......
string result = result.Name.Select(@regEx => Regex.Match(match.Groups[2].ToString(), @regEx));