1

从中读取 RESULT 的最佳方法是什么string只需要解析字符串,它是从 web 服务返回的

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

我可以使用mystring.split(' '),但我认为这不是一个好主意。

4

5 回答 5

5

您可以使用 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);
}
于 2013-05-12T08:02:00.360 回答
2
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;
        }
    }
}
于 2013-05-12T07:44:47.237 回答
1

你可以使用 split("\n") 吗?

于 2013-05-12T07:42:54.417 回答
1
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 到包含字母和数字的行尾,尽管我相信它需要针对特殊字符进行调整,如果它们是包含在您的数据集中。下面应该让您了解我的意思;

于 2013-05-12T09:17:20.423 回答
0

创建一个实体(类)并返回其实例。

public class ReturnValues
{
    public string Result {get; set;}
    public string return_Code
    // Other properties
}
于 2013-05-12T07:40:35.600 回答