首页 > 解决方案 > 如何使用 string.contains 找到分隔/隔离的子字符串?

问题描述

我正在尝试从列表中的字符串中解析并识别一些值。

string.Contains用来识别我正在寻找的值,但即使该值被其他文本包围,我也会得到点击。如果值是孤立的,我如何确保我只受到打击?

示例解析:

寻找价值 ="302"

string sale = 
  "199708. (30), italiano, delim fabricata modella, serialNumber302. tnr F18529302E.";

var result = sale.ToLower().Contains(”302”));

在这个例子中,我会得到 and 的命中"serialNumber302""F18529302E"这在上下文中是不正确的,因为我只想要一个命中,如果它发现“302”是孤立的,比如“dontfind302 shouldfind 302”。

关于如何做到这一点的任何想法?

标签: c#.netlinq

解决方案


如果您尝试正则表达式,您可以使用以下方法定义单词边界\b

string sale = 
  "199708. (30), italiano, delim fabricata modella, serialNumber302. tnr F18529302E.";

bool result = Regex.IsMatch(sale, @"\b302\b"); // false

sale = "A string with 302 isolated";

result = Regex.IsMatch(sale, @"\b302\b"); // true

因此,只有在字符串的开头、字符串的结尾或被非单词字符(即不是 az AZ 0-9 或 _)包围时,才会找到 302


推荐阅读