从文本字符串获取信息

时间:2019-07-13 11:51:16

标签: c# asp.net

我有一个像这样的字符串:

var info = "status=ACCEPTED&code=12345&type=CARD&id=98765";

如何以一种简单的方式从该字符串中获取信息?

示例:我只想从字符串中获取“状态”值,在本例中为“已接受”。

5 个答案:

答案 0 :(得分:2)

像这样使用HttpUtility.ParseQueryString() method

var parsed = HttpUtility.ParseQueryString(info);

// now you can use parsed["status"], parsed["code"], parsed["type"], and parsed["id"], which will all be strings

答案 1 :(得分:1)

首先用'&'分隔,然后 用=分隔并从中创建字典。

下面是c#代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace Rextester
{
 public class Program
 {
    public static void Main(string[] args)
    {

        Program prog = new Program();
        Dictionary<String,String> output = prog.splitString("status=ACCEPTED&code=12345&type=CARD&id=98765");
        Console.WriteLine(output["status"]);

    }

    public Dictionary<string,string> splitString(string text) {
      Dictionary<string,string> output = new Dictionary<string,string>();
        if(text != null) {
            string[] keyValueArray = text.Split('&');
            foreach(string keyVal in keyValueArray) {
                string[] finalSplit = keyVal.Split('=');
                output.Add(finalSplit[0],finalSplit[1]);
            }
        }
        return output;
    }
  }
}

答案 2 :(得分:1)

使用Linq:

var info = "status=ACCEPTED&code=12345&type=CARD&id=98765";
var field = "status";
var value = info.Split('&').Select(i => i.Split('='))
   .Where(f => f[0].Equals(field)).Select(f => f[1]).FirstOrDefault();

答案 3 :(得分:1)

如果您不喜欢更少的代码行:)

var info = "status=ACCEPTED&code=12345&type=CARD&id=98765";
var getInfo = new Func<string, string>(x => info.Split('&').Select(y => y.Split('=')).Where(y => y.Length > 1 && y[0] == x).Select(y => y[1]).FirstOrDefault());

现在只需将其称为-

var a = getInfo("status");
var b = getInfo("id");
var c = getInfo("something");

结果-

  

a =接受

     

b = 98765

     

c = null

概念相同,先除以&=。我正在使用LINQ来获取结果。

答案 4 :(得分:0)

您可以利用Linq Split,然后将其转换为List,最后确定为Dictionary<string, string>

您还可以创建一个简单的模型以将其转换为对象。

这是一个简单的辅助方法,可以满足您的需要:

public IDictionary<string, string> GetInfo(string info)
{
    var infoDic = new Dictionary<string, string>();

    var str = info.Split('&').ToList();

    for (int x = 0; x < str.Count; x++)
    {
        var pair = str[x].Split('=');

        infoDic.Add(pair[0], pair[1]);
    }

    return infoDic;

}

用法:

var info = "status=ACCEPTED&code=12345&type=CARD&id=98765";

var result = GetInfo(info);

var status = result.Where(x => x.Key.ToLower() == "status")
            .Select(x => x.Value)
            .First()
            .ToString();