查找字符是否单独存在于字符串 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 lookaroundsRegex.IsMatch:

if(Regex.IsMatch(line, @"(?<!%)%(?!%)")) {}

看到这个regex demo

如果 % 前面有 %,则 (?<!%) 否定后瞻将导致匹配失败,如果 [=],则 (?!%) 否定前瞻将导致匹配失败14=] 后跟 %.

我将 post 作为答案,因为评论有时可能会被其他用户忽略。

如果不需要正则表达式,那么一个简单的解决方案可能是:

if(line.Contains("%") && !line.Contains("%%"))
{ 
  // string ok 
}

正如其他人所指出的,您必须检查 % 是否完全包含在字符串中。