2013-10-04 41 views
1

我相信這不像我做的那麼複雜。 我有遵循下面的模式的字符串:使用C解析Fedex事務回覆字符串的最佳方法#

#,"value"#,"next value"#,"next value" . . . 

我需要爲了在我的應用程序使用的數據分析出數/值對。

這裏是一個返回的樣品:

0,"120"1,""10,"298630427"29,"577015971830"30,"SG MSNA "33,"A1"34,"4625"35,"239"36,"2105"37,"2759"60,"15"112,"0" 

爲了使問題複雜化的字符串可以包含換行符(\ r \ n或\ r \ n)中。 我可以通過簡單地用幾個string.replace調用去除換行符來處理這個問題。

我最終想將數據解析爲鍵/值對。我似乎無法將自己的思想放在正確的道路上。

我很抱歉,如果這是微不足道的,但我已經拉了18個小時以上兩個月,試圖滿足截止日期和我的大腦被槍殺。任何協助或正確的方向指導將不勝感激。現在

回答

1
var numVal=Regex.Matches(input,@"\"([^\"]+)\"(\d+)") 
       .Cast<Match>() 
       .Select(x=>new 
       { 
        num=x.Groups[2].Value, 
        value=x.Groups[1].Value 
       }); 

你可以如果你直接去鍵值對迭代numVal

foreach(var nv in numVal) 
{ 
    nv.num; 
    nv.value; 
} 
+0

@Aniruth - 這工作就像我需要。我擁有大部分的內容,但無法將我的頭包裹在正則表達式中。 – Dreampoet

1

,你也許可以使用LINQ,使您的生活更輕鬆。您必須瞭解並處理與鍵/值格式不匹配的情況。但是,您可能可以使用類似的東西來實現它。

var string_delimiter = new [] { ',' }; 
var kvp_delimiter = new[] { "\"" }; 

var dictionary = string_value.Split(string_delimiter) 
       .Select(kvp_string => kvp_string.Split(kvp_delimiter, StringSplitOptions.RemoveEmptyEntries)) 
       .ToDictionary(kvp_vals => kvp_vals.First(), kvp_vals => kvp_vals.Last()); 
相關問題