查找字符是否单独存在于字符串 C# 中
Finding if a charter exist alone in a string C#
我想查找(在 VS C# 中)字符串是否包含没有立即重复的字符(例如“%”)。
例如"i have % alone and this is fine=>%%"。我想找到包含单个“%”(甚至几次)的任何字符串,而不管是否出现相邻的“%%”。
以下显然行不通,将为foo2
给出true
:
string foo1="% I want to find this string";
string foo2="I don't want to find this string because the char %% is not alone";
string foo3="I%want%to%find%this%as%well!"
if(line.Contains("%")){}
我试图了解如何在此处应用正则表达式,但无济于事。
将我的评论移到这里:
您也可以为此使用非正则表达式方法:
if (s.Contains("%") && !s.Contains("%%"))
如果您需要使用正则表达式,您可以使用 negative lookarounds 和 Regex.IsMatch
:
if(Regex.IsMatch(line, @"(?<!%)%(?!%)")) {}
看到这个regex demo。
如果 %
前面有 %
,则 (?<!%)
否定后瞻将导致匹配失败,如果 [=],则 (?!%)
否定前瞻将导致匹配失败14=] 后跟 %
.
我将 post 作为答案,因为评论有时可能会被其他用户忽略。
如果不需要正则表达式,那么一个简单的解决方案可能是:
if(line.Contains("%") && !line.Contains("%%"))
{
// string ok
}
正如其他人所指出的,您必须检查 %
是否完全包含在字符串中。
我想查找(在 VS C# 中)字符串是否包含没有立即重复的字符(例如“%”)。
例如"i have % alone and this is fine=>%%"。我想找到包含单个“%”(甚至几次)的任何字符串,而不管是否出现相邻的“%%”。
以下显然行不通,将为foo2
给出true
:
string foo1="% I want to find this string";
string foo2="I don't want to find this string because the char %% is not alone";
string foo3="I%want%to%find%this%as%well!"
if(line.Contains("%")){}
我试图了解如何在此处应用正则表达式,但无济于事。
将我的评论移到这里:
您也可以为此使用非正则表达式方法:
if (s.Contains("%") && !s.Contains("%%"))
如果您需要使用正则表达式,您可以使用 negative lookarounds 和 Regex.IsMatch
:
if(Regex.IsMatch(line, @"(?<!%)%(?!%)")) {}
看到这个regex demo。
如果 %
前面有 %
,则 (?<!%)
否定后瞻将导致匹配失败,如果 [=],则 (?!%)
否定前瞻将导致匹配失败14=] 后跟 %
.
我将 post 作为答案,因为评论有时可能会被其他用户忽略。
如果不需要正则表达式,那么一个简单的解决方案可能是:
if(line.Contains("%") && !line.Contains("%%"))
{
// string ok
}
正如其他人所指出的,您必须检查 %
是否完全包含在字符串中。