簡體   English   中英

從字符串中提取值

[英]Extract Value from String

從此string讀取RESULT的最佳方法是什么? 僅字符串需要解析,它是從Web服務返回的

"RESULT: FAILED
 RESULT_CODE: 944
 RRN: 313434415392
 APPROVAL_CODE: 244447
 CARD_NUMBER: 4***********3412";

我可以使用mystring.split(' ') ,但是我認為這不是一個好主意。

您可以使用LINQ來構建字典:

string s = 
    @"RESULT: FAILED
    RESULT_CODE: 944
    RRN: 313434415392
    APPROVAL_CODE: 244447
    CARD_NUMBER: 4***********3412";

IDictionary<string, string> result = s
    .Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)
    .Select(line => line.Split(':'))
    .ToDictionary(x => x[0].Trim(), x => x[1].Trim());

然后按鍵查詢結果:

Console.WriteLine(result["RRN"]);

會給你313434415392

或者,如果您想獲取所有鍵和值,只需循環:

foreach (var item in result)
{
    Console.WriteLine("key: {0}, value: {1}", item.Key, item.Value);
}
string text = @"RESULT: FAILED
 RESULT_CODE: 944
 RRN: 313434415392
 APPROVAL_CODE: 244447
 CARD_NUMBER: 4***********3412";

using (StringReader reader = new StringReader(text))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        var values = line.Split(':');
        if (values.Length > 1 && values[0].Trim() =="RESULT")
        {
            var found = values[1].Trim(); // this is the value you want 
            break;
        }
    }
}

您可以使用split(“ \\ n”)嗎?

var regex = new Regex(@"(RESULT:)[a-zA-Z0-9\t .]+");
string text = @"RESULT: FAILED
 RESULT_CODE: 944
 RRN: 313434415392
 APPROVAL_CODE: 244447
 CARD_NUMBER: 4***********3412";

MatchCollection matches = regex.Matches(text);

foreach (Match m in matches)
{
    string values = m.Value;
}

我不確定是否要避免循環,也許您的數據集相當大。 此處提供的解決方案的替代方法是使用正則表達式查找匹配項。 我敢肯定,您會想出一個完美的正則表達式來匹配您的數據集,但是此結果在RESULT上應該可以很好地匹配包含字母和數字的行尾,盡管我認為如果需要特殊字符,則需要對其進行調整包含在您的數據集中。 下面應該讓您了解我的意思;

創建一個實體(類)並返回其實例。

public class ReturnValues
{
    public string Result {get; set;}
    public string return_Code
    // Other properties
}

暫無
暫無

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

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