代码之家  ›  专栏  ›  技术社区  ›  SunAwtCanvas

多行文本的子串

  •  1
  • SunAwtCanvas  · 技术社区  · 6 年前

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

    姓名:鲍伯

    年龄:3岁

    我的密码是:

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

    如何将其子串,以便获取值 3 Bob ?

    3 回复  |  直到 6 年前
        1
  •  6
  •   Enigmativity    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
    
        2
  •  1
  •   Yashar Aliabbasi    6 年前

    你可以通过使用 Split Substring 功能如下:

    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);
    
        3
  •  0
  •   Kram    6 年前

    你可以只用一行试试这个:

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

    第一个拆分的意思是分离每一行。 第二个拆分的意思是在“:”之后使用这个词。