C# 在字典中拆分字符串

C# 在字典中拆分字符串,c#,C#,如何拆分以下字符串 string s = "username=bill&password=mypassword"; Dictionary<string,string> stringd = SplitTheString(s); 请让我知道。谢谢您可以这样填充字典列表: Dictionary<string, string> dictionary = new Dictionary<string, string>(); string s = "userna

如何拆分以下字符串

string s = "username=bill&password=mypassword";

Dictionary<string,string> stringd = SplitTheString(s);

请让我知道。谢谢

您可以这样填充字典列表:

Dictionary<string, string> dictionary = new Dictionary<string, string>();
string s = "username=bill&password=mypassword";

foreach (string x in s.Split('&'))
{
    string[] values = x.Split('=');
    dictionary.Add(values[0], values[1]);
}

注意:请记住,此函数中没有验证,它假定输入字符串的格式正确

我认为类似的功能应该可以工作

public Dictionary<string, string> SplitTheStrings(s) {
    var d = new Dictionary<string, string>();  
    var a = s.Split('&');
    foreach(string x in a) {
        var b = x.Split('=');
        d.Add(b[0], b[1]);
    }
    return d;
}
公共字典拆分字符串{
var d=新字典();
var a=s.Split('和');
foreach(a中的字符串x){
var b=x.Split('=');
d、 增加(b[0],b[1]);
}
返回d;
}

看起来您正在尝试解析查询字符串-这已经内置,您可以使用:

string input = "username=bill&password=mypassword";
var col = HttpUtility.ParseQueryString(input);
string username = col["username"];
string password = col["password"];
var splitString=“用户名=账单&密码=通行证”;
var splits=新字符[2];
拆分[0]='=';
拆分[1]='&';
var items=splitString.Split(拆分);
var list=newdictionary{{items[1],items[3]};
var username=list.First().Key;
var password=list.First().Value;

这也是我的工作

其他答案更好、更容易阅读、更简单、更不容易出现错误等,但另一种解决方案是使用如下正则表达式提取所有键和值:

MatchCollection mc = Regex.Matches("username=bill&password=mypassword&","(.*?)=(.*?)&");
匹配集合中的每个匹配项将有两个组,一个组用于键文本,另一个组用于值文本


我不太擅长正则表达式,因此我不知道如何在不向输入字符串添加尾随“&”的情况下使其匹配…

如果键不重复

var dict = s.Split('&').Select( i=>
{
    var t = i.Split('=');
    return  new {Key=t[0], Value=t[1]};}
).ToDictionary(i=>i.Key, i=>i.Value);
如果按键可以重复

    string s = "username=bill&password=mypassword";
    var dict = s.Split('&').Select( i=>
    {
        var t = i.Split('=');
        return  new {Key=t[0], Value=t[1]};}
    ).ToLookup(i=>i.Key, i=>i.Value);

一个很好的解决方案,但并不像要求的那样是一本字典;-)@缪斯范——然而,这可能是找到字典的最好方法。强类型解析和可以轻松转换为强类型解析的结果集。
MatchCollection mc = Regex.Matches("username=bill&password=mypassword&","(.*?)=(.*?)&");
var dict = s.Split('&').Select( i=>
{
    var t = i.Split('=');
    return  new {Key=t[0], Value=t[1]};}
).ToDictionary(i=>i.Key, i=>i.Value);
    string s = "username=bill&password=mypassword";
    var dict = s.Split('&').Select( i=>
    {
        var t = i.Split('=');
        return  new {Key=t[0], Value=t[1]};}
    ).ToLookup(i=>i.Key, i=>i.Value);