从“脏”字符串中解析数字列表

时间:2014-03-14 09:55:29

标签: c# .net string

我有一个带有整数的字符串,它由任意数字和种类的符号分隔,例如:

fr365.43 // 236hu

并希望将其转换为数字365,43和236的列表。有一种简单的方法可以做到这一点吗?

5 个答案:

答案 0 :(得分:2)

使用正则表达式,您可以从“肮脏的”中提取数字。串

var r = new Regex(@"\d+");
var result = r.Matches("fr365.43//236hu");
foreach (Match match in result)
{
    Console.WriteLine(match.Value);
}
// outputs 365 then 43 then 236

答案 1 :(得分:1)

使用Regex.Matches和以下模式:

(\d+)

然后转换为int。

答案 2 :(得分:1)

string s ="fr365.43//236hu";
string result = s.Split(s.Where(x=>!char.IsDigit(x))
                 .Select(x=>x).ToArray())
                 .Where(x=>!String.IsNullOrEmpty(x));

结果是包含以下内容的IEnumerable: 365 43 236

答案 3 :(得分:0)

您可以使用Split方法,如果您有更多的分隔符,也应该包含它们:

str.Split('.','/').Select(x => x.All(char.IsDigit))
   .Select(int.Parse)
   .ToList();

答案 4 :(得分:0)

从字符串中提取整数的方法:

var res = Regex.Split(str, @"\D+").Where(x => x.Length > 0).Select(int.Parse).ToArray();