将多行字符串转换为多维数组?

use*_*019 1 c#

我有一个像这样的字符串:

Option1: Value1
Option2: Value2
Option3: Value3
Run Code Online (Sandbox Code Playgroud)

我试图将它放入一个多维数组,以便我可以根据我为'Option'添加的内容查找值,它将返回值.

到目前为止,我有这个将每行放入数组:

string[] Header = Headers.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None);
Run Code Online (Sandbox Code Playgroud)

我不确定如何将其拆分为二维数组,以便根据冒号分隔符拆分行?

我怎样才能执行查找?例如在PHP中我会使用varible:$Header['Option2']以返回"Option2"的值.

谢谢.

Mar*_*und 5

您可以使用LINQ完全构造查找字典:

var dictionary = text.Split(new []{Environment.NewLine}, StringSplitOptions.None)
          .Select(line => line.Split(':'))
          .ToDictionary(lineParts => lineParts[0], lineParts => lineParts[1]);
Run Code Online (Sandbox Code Playgroud)

解释它在简单代码中的作用:

var lines = text.Split(new []{Environment.NewLine}, StringSplitOptions.None); //split the string in lines
var dictionary = new Dictionary<string, string>();
foreach (var line in lines)
{
    var lineParts = line.Split(':'); //split line to parts with : as delimiter
    var key = lineParts[0]; //first part is the key
    var value = lineParts[1]; //second part is the value
    dictionary.Add(key, value);
}
Run Code Online (Sandbox Code Playgroud)

现在您可以像这样查找:

var value = dictionary["Option2"];
Run Code Online (Sandbox Code Playgroud)

  • 样式问题:你的意思是把`.`放在前一行的末尾而不是方法名之前吗?我以前没见过,如果我说实话,我讨厌它! (2认同)