我想检查一个字符串是否只包含正确的字母。
我使用了Char.IsLetter
。
我的问题是,当有像é或á这样的字符时,它们也被称为正确的字母,这不应该是。
是否有可能将字符检查为正确的字母A-Z或a-z,而不是像á那样的特殊字母?
答案 0 :(得分:24)
bool IsEnglishLetter(char c)
{
return (c>='A' && c<='Z') || (c>='a' && c<='z');
}
您可以将其设为扩展方法:
static bool IsEnglishLetter(this char c) ...
答案 1 :(得分:9)
您可以使用Char.IsLetter(c) && c < 128
。或者只是c < 128
本身,这似乎与您最接近的问题相符。
但是您通过过滤字符解决编码问题。请调查其他应用程序完全理解的内容。
可能你应该用Encoding.GetEncoding(someCodePage)
写作。
答案 2 :(得分:6)
您可以使用正则表达式\w
或[a-zA-Z]
答案 3 :(得分:3)
// Create the regular expression
string pattern = @"^[a-zA-Z]+$";
Regex regex = new Regex(pattern);
// Compare a string against the regular expression
return regex.IsMatch(stringToTest);
答案 4 :(得分:0)
在 C# 9.0
中,您可以使用 pattern matching enhancements。
public static bool IsLetter(this char c) =>
c is >= 'a' and <= 'z' or >= 'A' and <= 'Z';
答案 5 :(得分:-1)
使用 Linq 以便于访问:
if (yourString.All(char.IsLetter))
{
//just letters are accepted.
}