如何在c#中验证输入的字符,并且可以有空格

本文关键字:空格 字符 输入 验证 | 更新日期: 2023-09-27 17:49:43

我需要有一个方法来验证输入,以确保它是唯一的字符,我也允许空白,像"Alton Drive"的代码,我只允许字符没有空白。

 public bool IsCorrectString(string val)
    {
     foreach (char c in val)
      {
       if (!char.IsLetter(c))
        return false;
      }
      return true;
    }

我不确定是否regex是更好地使用在这里吗?

如何在c#中验证输入的字符,并且可以有空格

正则表达式肯定会简单得多。

^[A-Za-z's]*$

此正则表达式将只匹配字母和空格,并且对于包含其他内容的字符串将失败。

您将需要使用IsMatch

例如:

public bool IsCorrectString(string val)
{
    return Regex.IsMatch(val, @"^[A-Za-z's]*$")
}
    Boolean HasSpecialChars(string yourString)
    {
        return yourString.Any(ch => !Char.IsLetter(ch) && !Char.IsWhiteSpace(ch));
    }

您可以使用Char.IsWhiteSpace:

public bool IsCorrectString(string val)
{
    foreach (char c in val)
    {
        if (!char.IsWhiteSpace(c) && !char.IsLetter(c))
            return false;
    }
    return true;
}

或短:

return val.All(c => Char.IsWhiteSpace(c) || Char.IsLetter(c));

注意,它还包括其他字符,如制表符或换行符。如果不需要使用 (space)

您可以使用这个条件:

if (!char.IsLetter(c) && !char.IsWhiteSpace(c)) {
    return false;
}

您可以在一个语句中使用Split:

public bool IsCorrectString(string val)
{
    return val.All(x => char.IsLetter(x) || char.IsWhiteSpace(x));
}

如果你想只允许两个单词之间有空格,那么你也可以像这样使用if (!char.IsLetter(c)):

public bool IsCorrectString(string val)
{
    return val.Split().All(x => x.All(char.IsLetter) && x != string.Empty);
}

你可以从;if (!char.IsLetter(c) || c != ' ')到CC_7来解决问题。你也可以使用RegEx,这样代码会更简洁,但性能会更差。你的代码也可以被清理,我个人认为这将是最好的选择(使用迭代,但代码更干净)。下面是我用LINQ编写的简洁的1行版本

  return val.Where(c => !char.IsLetter(c) || !char.IsWhiteSpace(c)).Count() == 0;