正则表达式从C#中的字符串中提取2个整数值

时间:2018-06-21 04:26:41

标签: c# parsing

我对Web服务的响应如下:

$(".footer").css("position", "fixed");

我可以将其保存在文本文件中。

唯一的变化是2417和15。

现在我想从文本文件中将2417和15展开并保存在变量或数据库中。

对于数据库,我具有列Ext和Ringtime

2 个答案:

答案 0 :(得分:1)

这应该有效:

var test = "ok,SIP/2417,15,default,N";
var regex = new Regex("^ok,SIP/(?<number1>\\d+),(?<number2>\\d+),default,N$");
var match = regex.Match(test);
var val1 = match.Groups["number1"].Value;
var val2 = match.Groups["number2"].Value;

但这也可以:

var test = "ok,SIP/2417,15,default,N";
var values = test.Split(',');
var val1 = values[1].Substring(4);
var val2 = values[2];

请注意,在此阶段它们仍将是 strings ,因此,如果您需要将它们作为整数,则需要对其进行解析:

var number1 = int.Parse(val1);
var number2 = int.Parse(val2);

**如果选择TryParse,则Split是更好的选择。

Try it online

答案 1 :(得分:0)

如果您想要通用的正则表达式,可以尝试

 Regex r = new Regex(@"([\d]+,[\d]+)");
 string var = "ok,SIP/2417,15,default,N";
 Match match = r.Match(var);

如果您想要这些变量的列表,则下面是对任何数量的计数的动态解决方案。

 List<int> vals = new List<int>();
 vals.AddRange(match.Groups[0].Value.Split(',').Select(x => Convert.ToInt32(x)));

否则,如果您将要固定两个值。

 int val = Convert.ToInt32(match.Groups[0].Value.Split(',')[0]);
 int val2 = Convert.ToInt32(match.Groups[0].Value.Split(',')[1]);