查找包含特定字符串的行并在c#中随机选择一行

时间:2015-10-13 14:31:26

标签: c# string text random io

所以,我有一个看起来像这样的文本文件:

[hello]Hi
[hello]welcome back 
[hello]Hello sir 
[goodbye]goodbye sir
[goodbye]until next time
...

以下是代码的一部分:

string[] responseLines = File.ReadAllLines(@"responses.txt");
Random rand = new Random();
string response;

case "hello":
    chatBox.Items.Add(Me);
    response = responseLines[rand.Next(responseLines.Length)];
    JARVIS.SpeakAsync(response);
    chatBox.Items.Add("Jarvis: " + response);
    break;

问题是我想找到包含[hello]的行,然后随机选择其中一行。

2 个答案:

答案 0 :(得分:3)

而不是

string[] responseLines = File.ReadAllLines(@"responses.txt");

使用

string[] responseLines = File.ReadAllLines(@"responses.txt").Where(s => s.Contains("[hello]")).ToArray();

答案 1 :(得分:0)

在读取文件中的所有字符串后,将它们分成两个不同的列表:

string[] responseLines = System.IO.File.ReadAllLines(@"responses.txt");
List<string> helloStrings = responseLines.Where<string>(str => str.StartsWith("[hello]")).Select(str => str.Replace("[hello]", "")).ToList<string>();
List<string> goodByeStrings = responseLines.Where<string>(str => str.StartsWith("[goodbye]")).Select(str => str.Replace("[goodbye]", "")).ToList<string>();

现在从你需要的列表中选择一个随机元素