如何使用通配符在字符串中查找子字符串
How to find substring in string with wildcards
我有这样的字符串(可能更长)
string list = "ABCDGGWWWW1234567 ABCDGGWWWW1234568 ABCDGGWWWW1234569 ";
现在我需要检查子字符串 ABCDGGWWWW1234568
是否在这个字符串中。
我可以像下面那样做
list.IndexOf("ABCDGGWWWW1234568 ") >= 0;
但是,现在我遇到了以下问题,
如果我要查找子字符串 ABCDXXWWWW1234568
那么这也必须导致 true
说明问题,我搜索的时候第5个和第6个字符也可以是XX
换句话说,ABCDGGWWWW1234568
= ABCDXXWWWW1234568
总是两个字符都是 XX
或原始值,而不仅仅是一个。此外,字符串的长度始终为 17 位。而且它们总是大写的。
那么最有效的方法是什么?
我希望我可以使用像
这样的通配符
list.IndexOf("ABCD__WWWW1234568 ") >= 0;
list.IndexOf("ABCD??WWWW1234568 ") >= 0;
但不幸的是这不起作用,它永远找不到索引并且总是 returns -1
编辑
感谢@PanagiotisKanavos,我设法让它像这样工作
chassis = chassis.Substring(0, 4) + @"\S{2}" + chassis.Substring(6, 11) + @"\s+";
bool result = Regex.IsMatch(list, chassis);
IndexOf
没有通配符。你需要regular expressions for this. Use the Regexclass,例如:
var found=Regex.IsMatch(list,"ABCD\S{2}WWWW1234568\s+");
.
匹配任何字符。 \S
匹配任何非白色 space 字符。 \S{2}
恰好匹配两个非 space 字符。 \s+
匹配一个或多个 whitespace 个字符
试试这个:
if ("ABCDGGWWWW1234567 ABCDGGWWWW1234568 ABCDGGWWWW1234569".Contains("ABCDGGWWWW1234568") || "ABCDGGWWWW1234567 ABCDGGWWWW1234568 ABCDGGWWWW1234569".Contains("ABCDXXWWWW1234568"))
{
var result = true;
}
我有这样的字符串(可能更长)
string list = "ABCDGGWWWW1234567 ABCDGGWWWW1234568 ABCDGGWWWW1234569 ";
现在我需要检查子字符串 ABCDGGWWWW1234568
是否在这个字符串中。
我可以像下面那样做
list.IndexOf("ABCDGGWWWW1234568 ") >= 0;
但是,现在我遇到了以下问题,
如果我要查找子字符串 ABCDXXWWWW1234568
那么这也必须导致 true
说明问题,我搜索的时候第5个和第6个字符也可以是XX
换句话说,ABCDGGWWWW1234568
= ABCDXXWWWW1234568
总是两个字符都是 XX
或原始值,而不仅仅是一个。此外,字符串的长度始终为 17 位。而且它们总是大写的。
那么最有效的方法是什么?
我希望我可以使用像
这样的通配符list.IndexOf("ABCD__WWWW1234568 ") >= 0;
list.IndexOf("ABCD??WWWW1234568 ") >= 0;
但不幸的是这不起作用,它永远找不到索引并且总是 returns -1
编辑
感谢@PanagiotisKanavos,我设法让它像这样工作
chassis = chassis.Substring(0, 4) + @"\S{2}" + chassis.Substring(6, 11) + @"\s+";
bool result = Regex.IsMatch(list, chassis);
IndexOf
没有通配符。你需要regular expressions for this. Use the Regexclass,例如:
var found=Regex.IsMatch(list,"ABCD\S{2}WWWW1234568\s+");
.
匹配任何字符。 \S
匹配任何非白色 space 字符。 \S{2}
恰好匹配两个非 space 字符。 \s+
匹配一个或多个 whitespace 个字符
试试这个:
if ("ABCDGGWWWW1234567 ABCDGGWWWW1234568 ABCDGGWWWW1234569".Contains("ABCDGGWWWW1234568") || "ABCDGGWWWW1234567 ABCDGGWWWW1234568 ABCDGGWWWW1234569".Contains("ABCDXXWWWW1234568"))
{
var result = true;
}