2012-04-02 58 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