Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多行文本的子字符串_C#_Substring - Fatal编程技术网

C# 多行文本的子字符串

C# 多行文本的子字符串,c#,substring,C#,Substring,我有一个包含以下文字的文本文件: 姓名:鲍勃 年龄:3 我的c代码是: string text = File.ReadAllText("path to a.txt"); 如何对其进行子串,以便获得值3和Bob?您可以通过使用和子串函数来实现这一点,如下所示: String str = "Name: Bob\r\n\r\nAge: 32"; String Name = str.Split(new String[] { "\r\n" }, StringSplitOptions.RemoveEmpt

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

姓名:鲍勃

年龄:3

我的c代码是:

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

如何对其进行子串,以便获得值3和Bob?

您可以通过使用和子串函数来实现这一点,如下所示:

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);

通过使用and 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);

您可以仅使用一行代码来尝试此操作:

IEnumerable<String> list = str.Split('\n').Select(s => s.Split(':')[1]);
第一个拆分的意思是隔离每一行。
第二个拆分的意思是在“:”之后加上这个词。

你可以只用一行来尝试:

IEnumerable<String> list = str.Split('\n').Select(s => s.Split(':')[1]);
第一个拆分的意思是隔离每一行。
第二个拆分的意思是在“:”之后加上单词。

假设您正在从文件中读取数据,那么这应该可以很好地工作:

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
假设您正在从文件中读取数据,那么这应该可以很好地工作:

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
Bob和3不是文本的子字符串。它们是两个子串。你需要阅读,然后试着让你的问题更精确。闻起来像吗?你可以在每行使用Regex名称:\w*和年龄:\d*。@DudeCoder=>并在线测试。不努力,不编码,不研究,30分钟内没有答复,3个答案,这个问题闻起来像懒虫,3不是你文本的子串。它们是两个子串。你需要阅读,然后试着让你的问题更精确。闻起来像?你可以在每行使用Regex名称:\w*和年龄:\d*。@DudeCoder=>并在线测试它。不努力,不编码,不研究,30分钟内没有回答,3个答案,这个问题闻起来像懒虫。如果没有值,例如年龄:?您将获得IndexOutOfRangeException:@CodeNotFound-您完全正确。此外,他可能会做一些索引检查,如果他需要的话,他可能会验证这个问题before@CodeNotFound我似乎对年龄没有任何例外:如果没有价值怎么办,例如年龄:?您将获得IndexOutOfRangeException:@CodeNotFound-您完全正确。此外,他可能会做一些索引检查,如果他需要的话,他可能会验证这个问题before@CodeNotFound随着年龄的增长,我似乎没有任何例外:请投票支持将来的证明,因此,请用字典提问,尽管这个问题很难说清楚least@TheGeneral-同意。这个问题需要改进。我要求OP这么做,但他们已经逃之夭夭了。你可以用IsNullOrEmptyxs[0]替换IsNullOrWhitespacexs[0]@CodeNotFound-我故意选择不这样做,因为在下一行中我使用了Trim,我想保持一致。@Enigmativity好吧,谢谢你的回答,至于这个不确定的问题,我真的不知道如何表达一个好问题。。。尽管我已经读到了你是如何把我联系起来的。请投票给未来的证明,进一步用字典提问,尽管这个问题很难说清楚least@TheGeneral-同意。这个问题需要改进。我要求OP这么做,但他们已经逃之夭夭了。你可以用IsNullOrEmptyxs[0]替换IsNullOrWhitespacexs[0]@CodeNotFound-我故意选择不这样做,因为在下一行中我使用了Trim,我想保持一致。@Enigmativity好吧,谢谢你的回答,至于这个不确定的问题,我真的不知道如何表达一个好问题。。。尽管我已经读到了你是如何把我联系在一起的。