【问题标题】:Check if substring of a string exists in datatable检查数据表中是否存在字符串的子字符串
【发布时间】:2021-03-25 20:10:57
【问题描述】:

我有一个这样的数据表:

  column1    column2
----------- ----------
1  abc d      Alpha
2  ab         Gamma
3  abc de     Harry
4  xyz        Peter

我想检查数据表中是否存在字符串的子字符串。

例如如果我要查找的字符串是“abc defg”,则应该返回记录3(虽然记录1也是匹配的,但记录3的序列中常见字符较多)。

如上所述,我无法找到任何搜索方式。 任何帮助,指导将不胜感激。

【问题讨论】:

  • 请阅读how-to-ask pageHow to create a Minimal, Complete, and Verifiable example以改进您的问题并帮助我们了解您的问题。
  • 来自 XML 文件。在 XML 文件中,引号也分布在多个标签中。
  • 您是否考虑过使用Regular Expression
  • @Brian,是的。但也许我在正则表达式方面不够熟练,无法在这种情况下根据需要支持搜索。即在数据表中查找搜索字符串的子字符串。
  • 使用string.Contains 方法和string.Length 属性。这足以解决您的问题。

标签: c# string-search


【解决方案1】:

这将是一个两步过程。

  1. 过滤表中匹配的行。这可以通过string.Contains 方法完成。在 LINQ 中,这看起来像:
const string myText = "abc defg";
IEnumerable<Row> matches = MyTable.Where(row => myText.Contains(row.Column1));
  1. 选择最长的匹配。在 LINQ 中,这可能看起来像这样。
Row longestMatch = matches.OrderByDescending<Row, int>(row => row.Column1.Length).First();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 2013-01-09
    • 2011-07-30
    • 2013-12-13
    相关资源
    最近更新 更多