如何从这样的字符串'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) 中?
如何从这样的字符串'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) 中?
如果您可以假设文档将始终格式正确:
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 是唯一的并且您不关心顺序,那么您可能更喜欢使用 aDictionary
而不是 a List
。如果你真的想要一个数组而不是一个列表(你可能不想要),那么你可以使用ToArray()
.