簡體   English   中英

從結構為“key = value”的字符串中解析值

[英]Parse value from string with structure “key=value”

我有一個像這樣的字符串:

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的值。 字符串中這些鍵的位置可能會有所不同。 它們也可以位於字符串的開頭或/和末尾。

RESULT的值我必須得到int ,RCV_VALUE的值必須得到string

獲取這些鍵的值的最佳方法是什么,無論它們在字符串中的位置如何?

最好的選擇是正則表達式

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

您可以使用正則表達式輕松實現此目的,如下例所示。

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);

或者,如果您不想使用正則表達式,可以使用=作為分隔符拆分字符串,然后成對地解析值。

使用字符串溢出將其拆分為多行,然后循環遍歷數組。 在此之后我會使用indexof和substring或string remove來獲取我想要的部分。

這一切都說,這個問題聞起來“為我做我的工作”。 我建議你去www.codeproject.com學習基礎知識。

嘗試

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM