如何在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是更好地使用在这里吗?
正则表达式肯定会简单得多。
^[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;