Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查字符串是否严格包含字符串_C#_String_Contains - Fatal编程技术网

C# 检查字符串是否严格包含字符串

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";

我有一个这样的字符串: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";

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
是保存此数据的最合乎逻辑的方式?为什么不使用可以保存多个值的集合类型?