如何将输入验证为仅字符并且可以在C#之间有空格

时间:2014-03-12 21:00:13

标签: c# regex

我需要有一个验证输入的方法,以确保它只是字符我也允许白色空间,“Alton Drive”我的代码只允许字符没有空格。

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

我不确定在这里使用正则表达式是否更好?

6 个答案:

答案 0 :(得分:1)

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

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

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

您希望IsMatch使用此功能。

例如:

public bool IsCorrectString(string val)
{
    return Regex.IsMatch(val, @"^[A-Za-z\s]*$")
}

答案 1 :(得分:1)

alert("Hello");

答案 2 :(得分:0)

你可以增加你的if语句; if (!char.IsLetter(c))if (!char.IsLetter(c) || c != ' ')解决问题。您也可以使用RegEx,代码会更干净但性能会更差。您的代码也可以清理,我个人认为这将是最好的选择(使用迭代但代码更清晰)。这是我使用LINQ的干净1行版本;

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

答案 3 :(得分:0)

您可以使用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));

请注意,它还包含其他字符,例如制表符或换行符。如果不希望使用(空格)。

答案 4 :(得分:0)

您可以在一个声明中使用LINQ执行此操作:

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

如果您只想在两个单词之间留出空格,那么您也可以像这样使用Split

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

答案 5 :(得分:0)

您可以使用以下条件:

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