我正在编写的程序的设置是以管道符号分隔的字符串形式提供的。我在下面创建的代码将字符串拆分为其名称/值对,然后使用if语句的长列表在循环中手动遍历它们以创建变量并为其赋值。有更简单的方法吗?
string a = "en=1|ty=1|ns=0|bs=1|rw=0"; //....lots more of these
string[] b = a.Split('|');
foreach (string c in b)
{
string[] d = c.Split('=');
if (d[1] == "en") { string en = d[2]; }
if (d[1] == "ty") { string ty = d[2]; }
//...on and on and on
}
答案 0 :(得分:1)
除非您确实需要单独处理每个变量,否则字典将是处理值的更通用的方法:
var valueDictionary = new Dictionary<string,string>();
foreach (string a in "en=1|ty=1|ns=0|bs=1|rw=0".split("|"))
{
string[] b = a.Split('=');
valueDictionary[b[0]] = b[1]; //Your example was 1 base but I think it's should be a 0 base
}
然后您可以使用以下方式访问该值:
string enValue = valueDictionary["en"];
答案 1 :(得分:0)
您可以使用如下代码的字典:
string a = "en=1|ty=1|ns=0|bs=1|rw=0";
var dictionary = new Dictionary<string, string>();
a.Split('|').Select(c => c.Split('=')).ToList().ForEach((val) => { dictionary[val[0]] = val[1]; });