将管道分隔的字符串转换为变量和值的更简单方法?
Easier way to convert pipe separated string into variables and values?
我正在编写的程序的设置是以管道符号分隔的字符串形式提供的。我在下面创建的代码将字符串拆分为 name/value 对,然后使用一长串 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
}
除非您真的需要单独处理每个变量,否则字典将是一种更通用的处理值的方法:
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"];
您可以像下面的代码那样使用字典:
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]; });
我正在编写的程序的设置是以管道符号分隔的字符串形式提供的。我在下面创建的代码将字符串拆分为 name/value 对,然后使用一长串 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
}
除非您真的需要单独处理每个变量,否则字典将是一种更通用的处理值的方法:
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"];
您可以像下面的代码那样使用字典:
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]; });