我有一个这样的字符串:
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
。
获取这些键值的最佳方法是什么,无论它们在字符串中的位置如何?
答案 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