从结构为“key = value”的字符串中解析值

时间:2011-08-23 09:37:29

标签: c# string

我有一个这样的字符串:

SUBJECT=Some text here\r\n
VALUE=19355711\r\n
RCV_VALUE=2851404175\r\n
RESULT=1\r\n
CNCODE=0\r\n
KEY1=1\r\n
KEY2=2

现在我需要从这个字符串中获取RCV_VALUE和RESULT的值。字符串中这些键的位置可能会有所不同。它们也可以在字符串的开头或/和结尾处。

结果的值我必须得到int,RCV_VALUE的值必须为string

获取这些键值的最佳方法是什么,无论它们在字符串中的位置如何?

4 个答案:

答案 0 :(得分:3)

最好的选择是正则表达式

var regex=new Regex(@"RCV_VALUE=(?<value>\d+)");
var match=regex.Match(inputString);
var rcv_value=int.Parse(match.Groups["value"].Value);

答案 1 :(得分:1)

您可以使用正则表达式轻松实现此目的,如下例所示。

Regex expr = new Regex(@"^(?<Key>.*)=(?<Value>.*)$", RegexOptions.IgnoreCase | RegexOptions.Singleline);

var m = expr.Match("SUBJECT=Some text here\r\n");
var key = m.Groups["Key"].Value;
var value = m.Groups["Value"].Value;
// or 
var kvp = new KeyValuePair<string, string>(m.Groups["Key"].Value, m.Groups["Value"].Value);

或者,如果您不想使用正则表达式,可以使用=作为分隔符拆分字符串,然后成对地解析值。

答案 2 :(得分:0)

使用字符串spilt将其拆分为多行,然后循环遍历数组。在此之后我将使用indexof并使用substring或string remove来获取我想要的部分。

这一切都说,这个问题闻起来“为我做我的工作”。我建议你去www.codeproject.com学习基础知识。

答案 3 :(得分:0)

尝试

var RCV_VALUE = Regex.Match(myString, "RCV_VALUE=(\d+)").Groups[1].Value