您可以将此字符串转换为字典(即键值对)。首先通过换行符将初始字符串拆分为字符串数组。然后从该阵列由结肠分为两个部分的每个字符串 - 键和值:
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