如何拆分以下字符串
string s = "username=bill&password=mypassword";
Dictionary<string,string> stringd = SplitTheString(s);
这样我可以按如下方式捕获它:
string username = stringd.First().Key;
string password = stringd.First().Values;
请告诉我。感谢
答案 0 :(得分:6)
您可以像这样填写字典列表:
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]);
}
这将允许您像这样访问它们:
string username = dictionary["username"];
string password = dictionary["password"];
注意:请记住,此函数没有验证,它假定您的输入字符串格式正确
答案 1 :(得分:5)
看起来您正在尝试解析查询字符串 - 这已经内置,您可以使用HttpUtility.ParseQueryString()
:
string input = "username=bill&password=mypassword";
var col = HttpUtility.ParseQueryString(input);
string username = col["username"];
string password = col["password"];
答案 2 :(得分:2)
我觉得类似的东西应该有效
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;
}
答案 3 :(得分:1)
var splitString = "username=bill&password=pass";
var splits = new char[2];
splits[0] = '=';
splits[1] = '&';
var items = splitString.Split(splits);
var list = new Dictionary<string, string> {{items[1], items[3]}};
var username = list.First().Key;
var password = list.First().Value;
这也是我的工作
答案 4 :(得分:1)
如果按键不会重复
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);
如果Keys可以重复
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);
答案 5 :(得分:0)
其他答案更好,更易于阅读,更简单,更不容易出现错误等,但另一种解决方案是使用这样的正则表达式来提取所有键和值:
MatchCollection mc = Regex.Matches("username=bill&password=mypassword&","(.*?)=(.*?)&");
匹配集合中的每个匹配都有两个组,一组用于关键文本,另一组用于值文本。
我不太擅长正则表达式,所以我不知道如何在不添加尾随'&amp;'的情况下使其匹配到输入字符串......