【发布时间】:2021-08-27 13:06:24
【问题描述】:
我有一个这样的字符串(可能更长)
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;
但不幸的是它不起作用,它永远找不到索引并且总是返回-1
编辑
感谢@PanagiotisKanavos,我设法让它像这样工作
chassis = chassis.Substring(0, 4) + @"\S{2}" + chassis.Substring(6, 11) + @"\s+";
bool result = Regex.IsMatch(list, chassis);
【问题讨论】:
-
IndexOf没有通配符。为此,您需要正则表达式。使用Regex类 -
@PanagiotisKanavos 你能给我举个例子吗?我是正则表达式的新手
标签: c# string string-comparison