在逗号分隔的字符串中查找单词(不包含子字符串)



我正在使用一个linq查询,我在其中做了一些事情:

viewModel.REGISTRATIONGRPS = (From a In db.TABLEA
    Select New SubViewModel With {
    .SOMEVALUE1 = a.SOMEVALUE1,
    ...
    ...
    .SOMEVALUE2 = If(commaseparatedstring.Contains(a.SOMEVALUE1), True, False)
    }).ToList()

现在我的问题是,这不会搜索单词而是搜索子字符串,例如:

逗号分隔字符串 = "EWM,KI,KP"SOMEVALUE1 = "EW"

它返回 true,因为它包含在 EWM 中?

我需要的是在逗号分隔的字符串中找到单词(不包含子字符串)!

选项 1:正则表达式

Regex.IsMatch(commaseparatedstring, @"b" + Regex.Escape(a.SOMEVALUE1) + @"b")

b部分称为"单词边界",并告诉正则表达式引擎您正在寻找"完整单词"。Regex.Escape(...)确保正则表达式引擎不会尝试解释您尝试匹配的文本中的"特殊字符"。例如,如果您尝试匹配"one+two",则Regex.Escape方法将返回"one+two"

此外,请确保在代码文件的顶部包含 System.Text.RegularExpressions。

有关详细信息,请参阅 MSDN 上的 Regex.IsMatch 方法(字符串、字符串)。

选项 2:拆分字符串

您也可以尝试拆分字符串,这会更简单一些,但效率可能较低。

commaseparatedstring.Split(new Char[] { ',' }).Contains( a.SOMEVALUE1 )


- 用逗号分隔逗号
分隔字符串- 在每个子字符串上调用 equals() 而不是在整个事情上调用 contains()?

.SOMEVALUE2 = If(逗号分隔字符串。Split(',')。包含(a.SOMEVALUE1), 真, 假)

相关内容

  • 没有找到相关文章

最新更新