2012-04-02 90 views
4

我想检查一个字符串只包含字母正确。我为此使用了Char.IsLetter。 我的问题是,当有喜欢的字符E或A,他们也说是正确的字母,这不应该。检查是否烧焦isletter

是那里检查一个字符为正确的字母A-Z或A-Z没有特殊的信件像一个可能性?

+0

我要导出文件,并导入到是否有像电子专用标志会抛出错误另一个应用程序,... – Karl 2012-04-02 11:35:04

+7

当然电子商务或á是字母... – leppie 2012-04-02 11:35:04

回答

15
bool IsEnglishLetter(char c) 
{ 
    return (c>='A' && c<='Z') || (c>='a' && c<='z'); 
} 

可以使这是一个扩展方法:

static bool IsEnglishLetter(this char c) ... 
6

您可以使用正则表达式\w[a-zA-Z]

+0

我认为第二个更好,第一个也可以接受重音字符。 – zmbq 2012-04-02 11:38:55

+0

不是100%确定,但我记得它不会。我遇到了一些麻烦。例如\ w不符合挪威的符号。有一种启用unicode的方法:http://www.regular-expressions.info/unicode.html但我没有尝试过。 – Sly 2012-04-02 11:41:25

+2

我也不确定。既然我们都确信[a-zA-Z]可以工作,所以任何人阅读代码都会更好。 – zmbq 2012-04-02 11:43:13

2
// 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); 
8

您可以使用Char.IsLetter(c) && c < 128。或者仅仅是c < 128本身,这似乎与您的问题最接近。

但你是通过过滤字符求解编码问题。请调查其他应用程序完全理解的内容。

这可能是你应该只与Encoding.GetEncoding(someCodePage)来写。

+0

ç<128本身将返回非字母 – 2018-01-16 17:05:56

-1

使用的LINQ为方便:

if (yourString.All(char.IsLetter)) 
{ 
    //just letters are accepted. 
} 
+2

嗯? OP明确指出Char.IsLetter没有做到需要的东西。 – 2016-03-30 08:41:23