당신은 문서가 항상 잘 형성 될 것이라는 점을 가정 할 수있는 경우 :
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이 고유 당신이 돈 ' 순서에 신경 쓰지 않는다면 List
대신 Dictionary
을 사용하는 것이 좋습니다. 목록 대신 배열을 원한다면 (아마 그렇지 않을 것입니다) ToArray()
을 사용할 수 있습니다.
구조가 재귀적일 수 있습니까? 정확성을 검증하고 잘못된 입력을 처리해야하는지 아니면 제대로 입력되지 않았다고 가정 할 수 있습니까? 문자열에 세미콜론, 중괄호 또는 이스케이프 된 따옴표 등이 포함될 수 있습니까? –
아니오 - 잘못된 입력이 가능하지 않습니다. 유효성 검사가 필요 없습니다. 당신은 그것이 잘 형성 될 것이라고 추정 할 수 있습니다. 문자열은 이스케이프됩니다 (예 : 브라우저가 이스케이프 됨). – Rella
.Net의 버전은 무엇입니까? – SLaks