C# 检查字符串是否严格包含字符串
我有一个这样的字符串:str=P1 | P2 | P3 我需要检查字符串是否包含实例P1。 我这样做:C# 检查字符串是否严格包含字符串,c#,string,contains,C#,String,Contains,我有一个这样的字符串:str=P1 | P2 | P3 我需要检查字符串是否包含实例P1。 我这样做: if (str.Contains("P1")) {...} 我的问题是,当我查找P1时,str不包含P1,而是包含P10,它返回true,这是合乎逻辑的,但不是我需要的 如果字符串中有P10,如何严格检查P1而不返回true 感谢您的帮助为什么不拆分字符串并检查: str.Split('|').Contains("P1"); string input = "P1|P2|P3|P10";
if (str.Contains("P1"))
{...}
我的问题是,当我查找P1时,str不包含P1,而是包含P10,它返回true,这是合乎逻辑的,但不是我需要的
如果字符串中有P10,如何严格检查P1而不返回true
感谢您的帮助为什么不拆分字符串并检查:
str.Split('|').Contains("P1");
string input = "P1|P2|P3|P10";
string[] split = input.Split('|'); // { "P1", "P2", "P3", "P10" }
bool containsP1 = split.Contains("P1"); // true
为什么不拆分字符串并检查:
string input = "P1|P2|P3|P10";
string[] split = input.Split('|'); // { "P1", "P2", "P3", "P10" }
bool containsP1 = split.Contains("P1"); // true
您可以将字符串拆分为数组,然后按如下方式进行检查
bool bFound = str.split('|').Contains("p1")
您可以将字符串拆分为数组,然后按如下方式进行检查
bool bFound = str.split('|').Contains("p1")
如果您还需要检查
P10
,则按相反顺序执行,这意味着您将在P1
之前选择P10
如果每个p方法
后面都有一个
,您可以检查P1
。如果它是一个分隔符,并且不会出现在字符串的最末尾,那么它将不起作用
正则表达式是另一种解决方案:
Regex.IsMatch(str, "P1(?!\d)") // Matches P1 if not followed by another digit
一般来说,如果遇到这个问题,那么数据结构的选择就很糟糕。字符串并不完全是事物的集合,这正是您在这里尝试建模的对象。如果您还需要检查
P10
,那么请按相反顺序执行,这意味着您将在P1
之前选择P10
如果每个p方法
后面都有一个
,您可以检查P1
。如果它是一个分隔符,并且不会出现在字符串的最末尾,那么它将不起作用
正则表达式是另一种解决方案:
Regex.IsMatch(str, "P1(?!\d)") // Matches P1 if not followed by another digit
一般来说,如果遇到这个问题,那么数据结构的选择就很糟糕。字符串并不完全是事物的集合,这正是您试图在此处建模的对象。使用正则表达式可能是一个很好的例子,因为您需要确保要查找的字符串由管道或字符串的结尾分隔 例如:
string input = "P1|P2|P3|P10";
string pattern = @"P1(\||$)";
Regex.IsMatch(input, pattern);
使用正则表达式可能是一个很好的例子,因为您需要确保要查找的字符串由管道或字符串的结尾分隔 例如:
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)");
您必须检查您要查找的字符串后面是否跟有“|”,或者是否在您要检查的字符串的末尾
String str = "P1|P3|P20";
String strToFind = "P2";
System.Text.RegularExpressions.Regex.IsMatch(str, strToFind+@"(\||\Z)");
您确定
str
是保存此数据的最合乎逻辑的方式吗?为什么不使用可以保存多个值的集合类型?是否确定str
是保存此数据的最合乎逻辑的方式?为什么不使用可以保存多个值的集合类型?