从 C# 中的字符串列表中提取不同的数字列表
extract distinct list of number from a list of strings in C#
我有一个包含以下值的字符串列表:
"/manufacturers/244/rz-xvxcv/images/swed"
"/manufacturers/23/rz-gf/images/sltn"
"/manufacturers/34/rz-dffdf/images/five"
"/manufacturers/23/rz-gfgf/images/lead"
"/manufacturers/322/rz-dfg/images/carr"
"/manufacturers/3789/rz-fgdfgfg/images/zing"
我需要提取属于模式 /manufacturers/[int]/rz-
的不同数值列表
所以在上面的示例中,我的新列表将包含:244,23,34,322,3789
这可以使用 RegEx 和 Linq 来完成吗?
你可以使用这个模式
(\d+)(?!.*)
虽然没有按顺序提取
Demo
( # Capturing Group (1)
\d # <digit 0-9>
+ # (one or more)(greedy)
) # End of Capturing Group (1)
(?! # Negative Look-Ahead
. # Any character except line break
* # (zero or more)(greedy)
# Back reference to group (1)
) # End of Negative Look-Ahead
我只想使用 Split
而不是正则表达式
var numbers = paths.Select(p=>int.Parse(p.Split('/')[2])).ToList();
不是超级抽象或可重用,但非常切题。
var numbers = paths.Select(p => int.Parse(p.Substring(15, p.IndexOf('/', 15) - 15)));
如果您想使用 RegEx 和 LINQ:
var regex = new Regex(@"(\d+)");
var numbers = paths.Select(i => regex.Match(i).Value).ToList();
我有一个包含以下值的字符串列表:
"/manufacturers/244/rz-xvxcv/images/swed"
"/manufacturers/23/rz-gf/images/sltn"
"/manufacturers/34/rz-dffdf/images/five"
"/manufacturers/23/rz-gfgf/images/lead"
"/manufacturers/322/rz-dfg/images/carr"
"/manufacturers/3789/rz-fgdfgfg/images/zing"
我需要提取属于模式 /manufacturers/[int]/rz-
所以在上面的示例中,我的新列表将包含:244,23,34,322,3789
这可以使用 RegEx 和 Linq 来完成吗?
你可以使用这个模式
(\d+)(?!.*)
虽然没有按顺序提取
Demo
( # Capturing Group (1)
\d # <digit 0-9>
+ # (one or more)(greedy)
) # End of Capturing Group (1)
(?! # Negative Look-Ahead
. # Any character except line break
* # (zero or more)(greedy)
# Back reference to group (1)
) # End of Negative Look-Ahead
我只想使用 Split
而不是正则表达式
var numbers = paths.Select(p=>int.Parse(p.Split('/')[2])).ToList();
不是超级抽象或可重用,但非常切题。
var numbers = paths.Select(p => int.Parse(p.Substring(15, p.IndexOf('/', 15) - 15)));
如果您想使用 RegEx 和 LINQ:
var regex = new Regex(@"(\d+)");
var numbers = paths.Select(i => regex.Match(i).Value).ToList();