C# 如何比较不精确的字符串值
我想比较两个不精确的C# 如何比较不精确的字符串值,c#,string,compare,contains,C#,String,Compare,Contains,我想比较两个不精确的string值,例如我想比较Admin和Administrator,这应该返回true或应该执行。 我尝试了contain,但它不起作用 var prodcut = lstProducts.Where(i => i.Name.ToLower().Contains(appname.ToLower())).FirstOrDefault(); 如果i.Name为“Admin”且appname.ToLower()为“Administrator”,则上述代码不起作用。它只返回
string
值,例如我想比较Admin和Administrator,这应该返回true或应该执行。
我尝试了contain
,但它不起作用
var prodcut = lstProducts.Where(i => i.Name.ToLower().Contains(appname.ToLower())).FirstOrDefault();
如果
i.Name
为“Admin”且appname.ToLower()
为“Administrator”,则上述代码不起作用。它只返回null,但希望它能够检测值。字符串的位置不对(您正在Admin
中查找管理员
)
您可以通过以下两种方式进行检查:
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();
这是一个相当复杂的课题,但是有很多关于这个课题的研究 如果您想双向检查,那么如果A包含B或B包含A,您可以使用(
或
运算符),如下所示:
您能否添加更多的样本,以及提到的不起作用的
means@sujithkarivelil-如果i.Name
为管理员且appname.ToLower()
为管理员,则上述代码不起作用。如果输入正确,Admin
不包含Administrator
,但是Administrator
应该包含Admin
na(公共逻辑)?那么,为什么不尝试使用appname.ToLower().Contains(i.Name.ToLower())
lol呢?所以它必须是另一种方式。。。。只要使用if(a.contains(b)| | b.contains(a))
@EpicKip-如果你愿意,我可以写下你的答案。Bcz你是第一个提出这个建议的。
a.Contains(b) || b.Contains(a)