您可以將此字符串轉換爲字典(即鍵值對)。首先通過換行符將初始字符串拆分爲字符串數組。然後從該陣列由結腸分爲兩個部分的每個字符串 - 鍵和值:
var input = "Name: John\n Surname: Smith\n Address: XXX\n";
var dictionary = input.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries)
.Select(s => s.Split(':'))
.ToDictionary(p => p[0].Trim(), p => p[1].Trim());
然後可以通過鍵讀取值:
var name = dictionary["Name"]; // gives you John
注意:如果地址或一些其它字段被允許包含冒號,在選擇字典的值時,可以使用@Joel Coehoorn的評論中的string.Join選項。
或者你可以使用正則表達式來代替分割和連接字符串。只要找到模式在您的輸入相匹配:
var input = "Name: John\n Surname: Sm:ith\n Address: XX:X\n";
var dictionary = Regex.Matches(input, @"\s*([^:]+): ([^\n]+)\n").Cast<Match>()
.ToDictionary(m => m.Groups[1].Value, m => m.Groups[2].Value);
var address = dictionary["Address"]; // XX:X
*我試圖使用Substring函數* - 你可以添加你試過的代碼嗎?並澄清什麼*它可以以不同的順序出現*意味着 –
什麼版本的C#/ .Net? –
最簡單的方法是使用'String'類的'Split'方法,使用分隔符''\ n'' ..... – t0mm13b