示例输入: " 1 4 2 5 9 "
通缉: "1"
,"4"
,"2"
,"5"
,"9"
使用
var rgx = new Regex("???");
var matches = rgx.Matches(" 1 4 2 5 9 ");
var nums = new List<int>();
foreach(var match in matches)
nums.Add(match.Caputre.Value);
答案 0 :(得分:2)
如果您确定只有空格和数字块,则可以使用LINQ并使用int.Parse
解析整数:
var str = " 1 4 2 5 9 ";
var res = str.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries)
.Select(r => int.Parse(r))
.ToList();
如果您还需要一种预验证(为了确保您的字符串只包含任何空格和数字块,您可以使用更安全的基于正则表达式的解决方案:
var res2 = Regex.Matches(str, @"^(?:\s*([0-9]+))+\s*$")
.Cast<Match>()
.SelectMany(p => p.Groups[1].Captures.Cast<Capture>().Select(m => int.Parse(m.Value)))
.ToList();
两者都导致:
答案 1 :(得分:0)
拆分将是一种较慢的方式。
尝试使用匹配(),例如:
var nums = new List<int>();
foreach (Match match in Regex.Matches(" 1 4 2 5 9 ", @"\d+"))
{
nums.Add(Int32.Parse(match.Value));
}
///////////////
StringBuilder builder = new StringBuilder();
foreach (int nN in nums)
{
builder.Append(nN).Append(",");
}
string result = builder.ToString();
Console.WriteLine("{0}", result);