首页 > 解决方案 > contains 方法返回错误值

问题描述

Contains()用来检查一个字符串是否有一个单词,并且该方法返回 true,但没有我要比较的单词。

文本:

“在全民医疗保险和绿色新政的幌子下,民主党人正在接受过去一个世纪使国家陷入贫困并扼杀数百万人自由的疲惫经济理论,”彭斯在掌声中说道。“那个制度就是社会主义。

“所谓的绿色新政唯一的绿色就是如果我们这样做,它将花费纳税人多少绿色:9000万美元,”他说。民主党人表示,价格标签将低于彭斯引用的数字。

他在华盛顿郊外的保守党政治行动会议上发表的评论继续推动白宫和共和党全国委员会将反对党描绘成一心要使美国经济成为华盛顿中央计划的经济体,并打算从美国人的口袋里拿出钱来资助一个无数的社交项目。”

查询词语:“民族”

你知道另一种搜索方式吗?

标签: c#contains

解决方案


您的搜索正在返回true,因为文本包含“nations”,其中包括字符串“nation”。

如果您想搜索单词“nation”而不包含类似“nations”的单词,最简单的方法可能是使用正则表达式和\b匹配单词边界的元字符。

bool found = Regex.IsMatch(text, @"\bnation\b");

如果你想概括这一点,你可以写:

string search = "nation";
bool found = Regex.IsMatch(text, $@"\b{Regex.Escape(search)}\b");

正如@Flydog57 在评论中有用地指出的那样,如果这是您所追求的,您也可以进行不区分大小写的搜索:

string search = "nation";
bool found = Regex.IsMatch(text, $@"\b{Regex.Escape(search)}\b", RegexOptions.IgnoreCase);

推荐阅读