将管道分隔的字符串转换为变量和值的更简单方法?

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]; });