将字符串转换为ArrayCollection(C#,请参阅下面的字符串)

时间:2010-04-25 21:10:56

标签: c# .net string arrays arraycollection

如何从这样的字符串'name1 {value1,value2}; name2 {value3}; ... nameN {value12,valueN}'

以这种形式的数组或数组:Array = {string,int}; {string,int}; {string,int};

像这样:

{
 { name1 ; value1}
 { name1 ; value2}
 { name2 ; value3}
...
 { nameN ; valueN}
}

在C#(。net)?

1 个答案:

答案 0 :(得分:1)

如果您可以认为文档总是格式良好:

List<KeyValuePair<string, int>> results = new List<KeyValuePair<string, int>>();
foreach (string line in File.ReadAllLines("input.txt"))
{
    Match match = Regex.Match(line, @"^\s*{\s*(.*?)\s*;\s*(\d+)\s*}\s*$");
    if (match.Success)
    {
        string s = match.Groups[1].Value;
        int i = int.Parse(match.Groups[2].Value);
        results.Add(new KeyValuePair<string,int>(s,i));
    }
}

foreach (var kvp in results)
    Console.WriteLine("{0} ; {1}", kvp.Key, kvp.Value);

结果:

name1 ; 1
name1 ; 2
name2 ; 3
nameN ; 23

如果name1,name2,...,nameN是唯一的,并且您不关心订单,那么您可能更愿意使用Dictionary而不是List。如果你真的想要一个数组而不是一个列表(你可能没有),那么你可以使用ToArray()