我有一个像这样的字符串:
var info = "status=ACCEPTED&code=12345&type=CARD&id=98765";
如何以一种简单的方式从该字符串中获取信息?
示例:我只想从字符串中获取“状态”值,在本例中为“已接受”。
答案 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();