我需要有一个验证输入的方法,以确保它只是字符我也允许白色空间,“Alton Drive”我的代码只允许字符没有空格。
public bool IsCorrectString(string val)
{
foreach (char c in val)
{
if (!char.IsLetter(c))
return false;
}
return true;
}
我不确定在这里使用正则表达式是否更好?
答案 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;
}