2013-06-08 5 views
0

Я получаю строку, возвращаемую в мое приложение от моего шлюзового процессора. Содержание строковые:Parsing C# dynamic string

ssl_result=0 
ssl_result_message=APPROVAL 
ssl_txn_id=9621F9AD-E49E-4003-91BD-5C1B08569959 
ssl_approval_code=N54032 
ssl_cvv2_response= 
ssl_avs_response= 
ssl_invoice_number=123-ABC 
ssl_amount=5.00 
ssl_card_number=00*******0000 
ssl_exp_date=0000 
[email protected] 

ssl_result_message может быть либо "УТВЕРЖДЕНИЯ" или "DECLINED". Мне нужно проанализировать строку, чтобы определить, что сообщение было и если одобрено, что такое ssl_approval_code. Проблема, с которой я столкнулась, заключается в том, что эти значения будут динамическими.

+0

мкм, так что ваш вопрос? –

+3

Что именно вы подразумеваете под «динамикой»? Пока это кажется очень простой проблемой синтаксического анализа строк - что вы пробовали, который не работает для вас? –

+0

Предполагая, что Googling для «строкового разбора» вам не поможет, попробуйте «регулярное выражение». –

ответ

4
var dict = File.ReadLines(filename) 
      .Select(line=>line.Split(new char[]{'='},StringSplitOptions.RemoveEmptyEntries)) 
      .ToDictionary(parts=>parts[0], parts=>parts.Length>1 ? parts[1] : ""); 

Console.WriteLine(dict["ssl_result_message"]); 

, если он находится в строке, то

var dict = text.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries) 
      .Select(line=>line.Split(new char[]{'='},StringSplitOptions.RemoveEmptyEntries)) 
      .ToDictionary(parts=>parts[0], parts=>parts.Length>1 ? parts[1] : ""); 
+0

Большое спасибо. Это сработало отлично! – DigitalMcGrath