Linq或更好的方法从string []中提取值

时间:2017-03-13 13:04:12

标签: c# linq

我有这个输入字符串,需要提取Uid,pwd和Dsn属性的值... 我正在使用分割值; char然后替换Uid =“”这就是我如何读取其他属性的值......

String[] test = "Uid=test;Pwd=abc;dsn=xxx".split(';')

id = test[0].Replace("Uid=", "");
pwd = test[0].Replace("Pwd", "");
datasrc = test[0].Replace("Dsn", "");

有没有更好的方法从string []中提取值?

2 个答案:

答案 0 :(得分:3)

我建议使用Dictionary<String, String>和是, Linq 将初始字符串实现到其中:

  string test = "Uid=test;Pwd=abc;dsn=xxx";

  Dictionary<string, string> dict = test
    .Split(';')
    .Select(item => item.Split('='))
    .ToDictionary(pair => pair[0], pair => pair[1], StringComparer.OrdinalIgnoreCase);

  ...

  var id = dict["Uid"];
  var pwd = dict["Pwd"];
  var datasrc = dict["Dsn"]; // please, notice that the name is case insensitive

答案 1 :(得分:0)

您可以在拆分后进行投影,然后拆分 = 字符并选择第二个索引,但只有在保证字符串始终采用此格式的情况下才会起作用,那么这应该适用于你:

var result = "Uid=test;Pwd=abc;dsn=xxx".Split(';')
                                       .Select(x=> x.Split('=')[1]);

结果:

enter image description here

请参阅working DEMO Fiddle