【问题标题】:How could I check for no "!@#$%^&*,Etc" in a string? [duplicate]我如何检查字符串中没有“!@#$%^&*,Etc”? [复制]
【发布时间】:2020-06-04 09:36:40
【问题描述】:

嘿抱歉标题凌乱,但是我真的找不到这组歌曲的正确定义(!@#$%^&*()_+?>

if (c == '!' || c == '@' || c == '#' || c == '$' || c == '%' || c == '^' || c == '&' || c == '*' || c == '(' || c == ')' || c == '' || C == '' || c == '+' || c == '{' || c == '}' || c == '/' || c == '>' || c == '' || c == '~' || c == '`' || c == '?' || c == ':' || c == '"')

我确定有更好的方法来检查它,但我不知道任何可以检查它的函数。 帮助将不胜感激。

【问题讨论】:

  • 正则表达式是你的好朋友
  • 其他 Unicode 字符呢?您是否真的想要一个白名单?
  • 如果不想使用正则表达式,可以使用IndexOfAny。比如:c.IndexOfAny("!@#$%^&*()_+?><".ToCharArray()) != -1
  • 您正在寻找的东西很多。什么是互补集?意思是替代方案?只有字母和数字?也许检查那些更容易?=!

标签: c#


【解决方案1】:

您可能会使用正则表达式。

// text here refers to your entire string
if (Regex.Matches(text, @"[!@#$%^&*()_+?><]"))
{
    // do something
}

类似的东西应该可以解决问题。

【讨论】:

  • 对不起,我缺乏理解,但“Regex.Matches”中的“c”指的是字符“c”?如果是这样,它应该在“for”或“foreach”循环中运行,对吧?
  • 我相信我的正则表达式实际上是错误的。是的,c 应该是指您正在谈论的字符串,而不是每个单独的字符。
猜你喜欢
  • 2020-08-30
  • 2021-01-03
  • 2019-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-07
相关资源
最近更新 更多