拆分线有两个分隔符

时间:2017-07-28 14:01:52

标签: c# string winforms list split

CONTEXT

我正在设计一个应用程序,它将为要使用的应用程序引入初始设置。设置通过文本文件导入,所有设置都具有以下格式:

Color= Blue
Size= 5
Value = 100

每一行都是创建的对象设置(字符串a,字符串b),使用" ="的分隔符;用Line.Split()。然后将创建的每个对象添加到List(设置)_settingsList。

问题

文本文件末尾有2个设置格式为

Location = 123 This Street, City, State, Zip Code

在这种情况下,我想用" ="和","并使用它来创建一个对象Location(字符串名称,字符串地址,字符串城市,字符串状态,字符串zip)。最后,这将被添加到List _locList。

当前代码

StreamReader reader = new StreamReader(openFileDialog1.FileName);
string line;

while ((line = reader.ReadLine()) != null)
{  
   string[] words = line.Split('=');
   if(words[0].ToLower().Trim() == "Location")
   {
       string keepThis = words[0].ToLower().Trim();
       string[] Words = line.Split('='); //how to split by 2 delimiters?
       _locList.Add(new Location(Words[0], Words[1], Words[2], words[3], Words[4]);
   }
  _settingsList.Add(new Setting(words[0], words[1]));
}

字符串keepThis就在那里,因为我试图删除整个" Location ="部分来自线路,使用","作为分隔符,然后将其添加为新位置(保持这个,单词[0],单词[1],单词[2],单词[3])

任何有助于解决此问题的建议都将非常感谢!

2 个答案:

答案 0 :(得分:1)

string[] words = line.Split('=', ',');

使用它,你应该是好的。你真的很亲密。实际上,您可以根据需要为.split()添加任意数量的参数,以根据需要包含尽可能多的转义字符。只是一个提示,如果你曾经使用过3个或更多的转义字符,我建议先制作一个数组,然后将该数组作为参数传递。保持清洁!

希望有助于萌芽!

答案 1 :(得分:1)

string[] Words = line.Split('='); 

应该是:

string[] Words = words[1].Split(',');

由于您已经拆分了该行,因此第二项(索引为1)的所有内容都位于=的右侧。