【问题标题】:How to compare inexact string values如何比较不精确的字符串值
【发布时间】:2020-01-26 15:38:06
【问题描述】:

我想比较两个不准确的string 值例如我想比较AdminAdministrator,这应该返回true 或者应该执行。 我试过contain 不工作

 var prodcut = lstProducts.Where(i => i.Name.ToLower().Contains(appname.ToLower())).FirstOrDefault();

如果i.Name 是“管理员”且appname.ToLower() 是“管理员”,上述代码将不起作用。它只是返回 null 但希望它应该检测值。

【问题讨论】:

  • 能否请您添加更多示例,并且还提到了which is not working 的意思
  • @sujithkarivelil - 如果i.Name 是管理员并且appname.ToLower() 是管理员,则上述代码不起作用。它只是返回 null。
  • 如果输入正确,Admin 不包含AdministratorAdministrator 应该包含Admin na(通用逻辑)?那你为什么不试试appname.ToLower().Contains(i.Name.ToLower())lol
  • 所以它必须是相反的方式......只需使用if(a.contains(b) || b.contains(a))
  • @EpicKip - 如果你愿意,我可以写下你的答案。因为你是第一个建议的。

标签: c# string compare contains


【解决方案1】:

如果您想双向检查,如果 A 包含 B 或 B 包含 A,您可以使用 || operatorOR 运算符),如下所示:

a.Contains(b) || b.Contains(a)

【讨论】:

    【解决方案2】:

    你弄错了字符串(你在Admin中寻找Adminstrator

    您可以像这样进行双向检查:

     lstProducts.Where(i => 
         i.Name.ToLower().Contains(appname.ToLower()) ||
         appname.ToLower().Contains(i.Name.ToLower())
     ).FirstOrDefault();
    

    或者只比较前几个字符:

    lstProducts.Where(i => 
        i.Name.ToLower().SubString(0,5) == appname.ToLower().SubString(0,5))
    ).FirstOrDefault();
    

    Fuzzy matching 实际上是一个相当复杂的主题,但对该主题有很多研究。

    【讨论】:

      猜你喜欢
      • 2017-02-07
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-27
      • 2021-09-03
      相关资源
      最近更新 更多