检查基本拉丁字母(A-Z)的最简单方法

时间:2012-01-31 16:09:07

标签: c# validation char

也许我错过了一些明显的东西,但有没有更简单的方法来检查一个字符是否是一个基本的拉丁字母(a-z),而不是转换为字符串并使用正则表达式?:例如:

public static bool IsBasicLetter(Char c) {
    return Regex.IsMatch(c.ToString(), "[a-z]", RegexOptions.IgnoreCase);
}

Char.IsLetter匹配来自许多字母表的数百个字母字符。我可以直接检查代码点,但这感觉很粗略:

public static bool IsBasicLetter(Char c) {
    int cInt = c;
    return !(cInt < 65 || cInt > 122 || (cInt > 90 & cInt < 97));
}

3 个答案:

答案 0 :(得分:14)

如果你使用字符文字,你的第二段代码看起来好多了:

public static bool IsBasicLetter(char c) {
    return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
}

答案 1 :(得分:2)

这个怎么样?

return (x >= 'a' && x <= 'z') || (x >= 'A' && x <= 'Z');

答案 2 :(得分:2)

如果您想让它更像AZ的子集和其他几个字符(即检查有效的Base64字符),请考虑使用true的前127或255个字符的布尔标志数组您希望在IsBasicLetter方法中允许的字符。这是大多数库实际实现此类函数的方式。

对于更多Unicode友好的字符检查方法(明显超出问题范围),请查看Char类的方法,如IsLetterOrDigit,检查所有可能的字母变体。