【问题标题】:Check String Only Contain Characters检查字符串仅包含字符
【发布时间】:2016-06-02 12:44:32
【问题描述】:

我知道以前有人问过这个问题,但我的代码不起作用。

我需要检查一个字符串是否只包含字母、数字和空格。如果它包含任何其他内容,我需要失败。

我尝试过RegEx方法,但我不懂正则表达式,所以我需要使用LINQ方法进行评估。

这是我的代码:

if (!CSVItemArray[count].All(Char.IsLetterOrDigit) && !CSVItemArray[count].Contains(" "))
{
    return false;
}

【问题讨论】:

  • CSVItemArray 是字符串数组吗?
  • @ChrisF 是的。
  • 所以我需要使用 LINQ 方法进行评估... LINQ 与检查字符类型有什么关系?
  • 这里你真的应该尝试考虑正则表达式,一旦你习惯了它就会更加清晰。在这种特殊情况下,“/^[a-zA-Z0-9]+$/”就足够了。例如,您可以查看regexr.com。您将找到您的表达方式的教程、帮助、示例和在线测试!

标签: c# .net wpf


【解决方案1】:

只需在All 查询中结合对字母、数字或空格的检查:

if (!CSVItemArray[count].All(c => Char.IsLetterOrDigit(c) || Char.IsWhiteSpace(c)))
{
    return false;
}

【讨论】:

    【解决方案2】:

    你的逻辑有点混乱。如果CSVItemArray[count] 中的字符串仅包含字母、数字和空格,则以下返回true

    return CSVItemArray[count].All(c => Char.IsLetterOrDigit(c) || Char.IsWhiteSpace(c));
    

    【讨论】:

    • 这是一个布尔验证函数,如果不满足我的条件,则返回false。
    • @Smithy 是的,它就是这么做的。我说如果它包含“仅包含字母、数字和空格”,它会返回true,所以如果有不同的东西它会返回falls。代码检查字符串中的 All 字符是否为字母、数字或空格。
    【解决方案3】:

    因为不理解而做某事(例如使用正则表达式)是一件坏事——至少对开发人员而言。特别是如果您想要做的事情可以通过使用正则表达式轻松实现。

    话虽如此,您可以简单地使用它:

    Regex r = new Regex("^[A-Za-z0-9\\s]*$");
    var valid = r.IsMatch(myString);
    

    这将查找任意数量的大写或小写字符、数字和空白字符。序列本身包含在[] 中,下面的* 设置序列可以在字符串中出现的次数(在你的情况下没有 uo 到无限次)。 ^$ 仅用于重复标记字符串的开始和结束。这避免了 %asdfgh12345 // 将匹配例如。

    编辑:如果您还需要元音变音(ä、ö、ü、ß、...),您可以查看 this post,它也处理特殊字符。

    【讨论】:

    • 好点。你的正则表达式不包括 äöüß 和那些字母。但 OP 没有具体说明什么是他的信。
    • @HimBromBeere “做某事 [...] 因为不理解它是一件坏事...” 我绝对同意这一点。我将学习 Regex 的工作原理,但如果我在评估中使用它,我将不得不解释它在做什么,而我的导师没有教过我,所以它不会很好。
    • @HimBromBeere 我已经意识到我现在的问题之一。我现在正在使用正则表达式。我的代码在检查带有撇号的字符串时失败。我如何将其包含在其中? "^[A-Za-z0-9\\s]*$"
    • 只需将其放入大括号中:A-Za-z0-9´\\s。如果您需要更多特殊字符,则应将其添加到您的问题中,以便其他人也有机会编辑他们的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 2010-12-19
    • 2015-03-15
    • 1970-01-01
    • 2014-10-01
    相关资源
    最近更新 更多