我的示例代码如下所示:
string name = "[name1][name2][name3][name4][name5]";
Match match = Regex.Match(name, @"\w+");
string[] _name = new string[5];
int i = 0;
while (match.Success)
{
_name[i] = match.Value;
i++;
match = match.NextMatch();
}
match = null;
您可以帮我将regex和linq结合起来将代码转换为1行吗?
结果可能看起来像:
string[] _name = ...
最佳答案
您可以使用
var result = Regex.Matches("[name1][name2][name3][name4][name5]", @"\w+")
.Cast<Match>()
.Select(p => p.Value).ToList();
或者可以使用
Cast
代替OfType
。参见MSDN:OfType<TResult>(IEnumerable)
方法仅返回源中可以转换为TResult
类型的那些元素。如果无法将元素强制转换为TResult
类型,则要接收异常,请使用Cast<TResult>(IEnumerable)
。结果:
关于c# - 结合正则表达式和linq在C#中拆分字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32228017/