我正在开发一个聊天机器人,我有一个文本文件,里面以Q,A,Q,A,Q,A的格式存储了问题和答案:
狗是猫吗?
不是
猫是狗吗?
不是
我需要检查文本文件是否包含输入的内容,然后将输出值设置为问题的下一行,即答案。这是我目前的代码:
static string path = Path.Combine(Directory.GetCurrentDirectory(), "memory.txt"); static IEnumerable<string> lines = File.ReadLines(path); static string inputValue; static string outputValue = " "; while (!shutdown) { Console.Write("User: "); inputValue = Console.ReadLine(); inputValue = inputValue.ToLower(); inputValue = inputValue.Trim(new Char[] { ' ', '.', ',', ':', ';', '*' }); StringComparison comp = StringComparison.OrdinalIgnoreCase; if (inputValue == "hi" || inputValue == "hello" || inputValue == "greetings") { outputValue = "Hi"; } else if (inputValue.Contains("how are you")) { outputValue = "Good"; } else { if (File.ReadAllLines(path).Contains(inputValue)) { outputValue = //这是我需要解决的部分 } else { } } Console.Write("Computer: "); Console.WriteLine(outputValue); outputValue = " "; } }
回答:
我建议使用 Linq,特别是 SkipWhile
方法:
outputValue = File .ReadLines(path) .SkipWhile(line => line != inputValue) .Skip(1) .FirstOrDefault();if (outputValue != null) { //TODO: 已找到outputValue,请在此处添加相关代码 }