【问题标题】:displaying sentence using string chunks使用字符串块显示句子
【发布时间】:2015-03-25 19:47:59
【问题描述】:

这是我制作的一个程序,用于在 xml 文件中显示所有可能包含“who”和“your”的字符串。 xml 文件包含几句话,例如: 你好吗,你叫什么名字,你的学校叫什么名字。如果“谁”和“你”一个接一个出现,我编写的程序会显示句子。我如何将字符串分成块,然后将它们传递给通过 xml 进行检查。 我尝试的代码是:

var doc = XDocument.Load("dic.xml");
string findString = "what your";
var results = doc.Descendants("s")
                 .Where(d => d.Value.Contains(findString.ToLower()))
                 .Select(d => d.Value);

foreach (string result in results)
{
    Console.WriteLine(result);
}

提前致谢。

【问题讨论】:

  • 不清楚您要做什么。请更具体,详细解释输入的样子(包括一个-但完整的示例),您尝试实现的算法将如何处理输入,以及实现看起来像。请阅读stackoverflow.com/help/how-to-ask,了解如何以清晰、可回答的方式提出您的问题。
  • 我只想显示包含这两个词的所有句子,但是当我将它们作为单个字符串传递时,我想将此字符串拆分为块

标签: c# .net xml


【解决方案1】:

您需要检查每个结果是否包含“谁”和“您的”。您的原始代码正在寻找字符串“who your”而不是两个字符串“who”和“your”。有关string.Contains(string) 的信息,请参阅this 链接

代码

var doc = XDocument.Load("dic.xml");

var results = doc.Descendants("s").Where(d => d.Value.Contains("your") || d.Value.Contains("who")).Select(d => d.Value);

foreach (string result in results)
{
    Console.WriteLine(result);
}

编辑:误读您的原始代码并将过滤器放在错误的位置

【讨论】:

  • 没问题,我刚刚编辑了这个问题,因为我误解了你的代码。修改后的版本应该会更好
  • @TabiaRashid 在您的原始陈述中听起来您想要包含单词和特定顺序的句子?这不会只返回包含任何一个单词的句子吗?而且即使改成and,还是不尊重顺序....还是我误解了你的目标?
  • 不,我只想要包含我提供的特定单词的句子
猜你喜欢
  • 2015-05-19
  • 1970-01-01
  • 2017-01-25
  • 2022-01-01
  • 1970-01-01
  • 2015-11-13
  • 1970-01-01
  • 1970-01-01
  • 2016-12-17
相关资源
最近更新 更多