检查string是否严格包含字符串
本文关键字:包含 字符串 string 是否 检查 | 更新日期: 2023-09-27 18:14:52
我有一个字符串看起来像这样:str = P1|P2|P3....
我需要检查字符串是否包含实例P1。我这样做:
if (str.Contains("P1"))
{...}
我的问题来了,当我寻找P1和str不包含P1,但P10,它返回true,这是合乎逻辑的,但不是我需要的。
如果字符串中有P10,如何严格检查P1而不返回true ?
谢谢你的帮助
你可以将字符串分割成数组,然后像这样检查
bool bFound = str.split('|').Contains("p1")
如果您也需要检查P10
,则按相反顺序进行检查,这意味着您将在P1
之前拾取P10
。
如果每个Psomething
后面跟着一个|
,你可以检查P1|
。如果它是一个分隔符,并且不会出现在字符串的最后,那么这将不起作用。
一个正则表达式将是另一个解决方案:
Regex.IsMatch(str, "P1(?!'d)") // Matches P1 if not followed by another digit
一般来说,如果你遇到这个问题,这是一个糟糕的数据结构选择。字符串不完全是东西的集合这就是你要建模的
为什么不拆分字符串并检查一下呢?
string input = "P1|P2|P3|P10";
string[] split = input.Split('|'); // { "P1", "P2", "P3", "P10" }
bool containsP1 = split.Contains("P1"); // true
str.Split('|').Contains("P1");
可能是使用正则表达式的好例子,因为您需要确保您正在查找的字符串由管道或字符串的末尾分隔。
例如:string input = "P1|P2|P3|P10";
string pattern = @"P1('||$)";
Regex.IsMatch(input, pattern);
您必须检查您正在查找的字符串是否后跟'|'或位于您检查的字符串的末尾。
String str = "P1|P3|P20";
String strToFind = "P2";
System.Text.RegularExpressions.Regex.IsMatch(str, strToFind+@"('||'Z)");