C# 从字符串中提取值

C# 从字符串中提取值,c#,string,parsing,C#,String,Parsing,从该字符串中读取结果的最佳方法是什么只需解析字符串,它是从web服务返回的 "RESULT: FAILED RESULT_CODE: 944 RRN: 313434415392 APPROVAL_CODE: 244447 CARD_NUMBER: 4***********3412"; 我可以使用户mystring.split(“”),但我认为这不是一个好主意。创建一个实体(类)并返回其实例 public class ReturnValues { public string Re

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

"RESULT: FAILED
 RESULT_CODE: 944
 RRN: 313434415392
 APPROVAL_CODE: 244447
 CARD_NUMBER: 4***********3412";
我可以使用户
mystring.split(“”)
,但我认为这不是一个好主意。

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

public class ReturnValues
{
    public string Result {get; set;}
    public string return_Code
    // Other properties
}
创建实体(类)并返回其实例

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

是否可以使用split(“\n”)?

是否可以使用split(\n”)?

您可以使用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());
将为您提供
313434415392

或者,如果要获取所有键和值,只需循环:

foreach (var item in result)
{
    Console.WriteLine("key: {0}, value: {1}", item.Key, item.Value);
}

您可以使用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());
将为您提供
313434415392

或者,如果要获取所有键和值,只需循环:

foreach (var item in result)
{
    Console.WriteLine("key: {0}, value: {1}", item.Key, item.Value);
}
我不确定您是否试图避免循环,可能您的数据集相当大。这里提供的解决方案的另一种选择是使用正则表达式查找匹配项。我相信你可以找到完美的正则表达式来匹配你的数据集,但是这个正则表达式应该能够很好地匹配包含字母和数字的行尾的结果,尽管我相信如果数据集中包含特殊字符,则需要对其进行调整。下面应该让你明白我的意思


我不确定您是否试图避免循环,可能您的数据集相当大。这里提供的解决方案的另一种选择是使用正则表达式查找匹配项。我相信你可以找到完美的正则表达式来匹配你的数据集,但是这个正则表达式应该能够很好地匹配包含字母和数字的行尾的结果,尽管我相信如果数据集中包含特殊字符,则需要对其进行调整。下面应该让你明白我的意思

@levi:你应该告诉我这个问题。问题中没有任何地方提到这是一个Web服务问题。在他提到Web服务之前,你的回答也毫无意义。@levi:你应该在问题中告诉他。问题中没有提到这是一个Web服务问题。在他提到Web服务之前,你的回答也毫无意义。我找不到LineReader类,请点击链接@levi。答案中有类。我找不到LineReader类,请点击链接@levi。类在答案中。为什么不读取整个字符串(包括空格),删除空格,然后存储新字符串。是否有特殊字符?如果不是,正则表达式可能是一个很好的选择,可以消除大多数不必要的迭代。为什么不读取整个字符串(包括空格),删除空格,然后存储新字符串。有特殊字符吗?如果不是,正则表达式可能是一个很好的选择,可以消除大多数不必要的迭代。这是一个问题还是一个答案?这是一个问题还是一个答案?捕获组位于错误的部分;您捕获的是标签而不是值。另外,使用
.Match()
代替
.Matches()
;它将返回第一个匹配。捕获组位于错误的部分;您捕获的是标签而不是值。另外,使用
.Match()
代替
.Matches()
;它将返回第一场比赛。