子串多行文本

时间:2018-06-10 05:30:57

标签: c# substring

我有一个包含以下字词的文字文件:

  

姓名:Bob

     

年龄:3

我的c#代码是:

string text = File.ReadAllText("path to a.txt");

我如何对此进行子串,以便我可以获得值3Bob

3 个答案:

答案 0 :(得分:6)

假设您正在从文件中读取数据,那么这应该很有效:

Dictionary<string, string> pairs =
    File
        .ReadAllLines(@"50780830.txt")
        .Select(l => l.Split(':'))
        .Where(xs => xs.Length == 2)
        .Where(xs => !String.IsNullOrEmpty(xs[0].Trim()))
        .ToDictionary(xs => xs[0].Trim(), xs => xs[1].Trim());

Console.WriteLine(pairs["Name"]);
Console.WriteLine(pairs["Age"]);

当我跑步时,我得到:

Bob
3

答案 1 :(得分:1)

您可以使用SplitSubstring功能实现此目的:

String str = "Name: Bob\r\n\r\nAge: 32";
String Name = str.Split(new String[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries)[0];
Name = Name.Substring(Name.IndexOf(':') + 1).Trim();
String Age = str.Split(new String[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries)[1];
Age = Age.Substring(Age.IndexOf(':') + 1).Trim();
Console.WriteLine(Name + "," + Age);

答案 2 :(得分:0)

您只需一行即可尝试:

IEnumerable<String> list = str.Split('\n').Select(s => s.Split(':')[1]);

第一个分裂意思是隔离每一行。 第二个分裂意思是在':'之后取词。