2012-04-02 8 views
4

文字列に正しい文字だけが含まれているかどうかを確認したい。 私はこれにChar.IsLetterを使用しました。 私の問題は、éやáのような文字があるとき、正しい文字であるとも言われます。char isletterを確認する

áのような特殊文字がない正しい文字A-Zまたはa-zとしてcharをチェックする可能性がありますか?

+0

...もちろんEの – Karl

+7

か文字は... – leppie

答えて

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

のための正規表現\wまたは[a-zA-Z]を使用することができます:あなたはChar.IsLetter(c) && c < 128を使用することができます

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

あなたはこの拡張メソッドを作ることができ、それ

+0

私は第二の方が良いと思う、第一はアクセント付きの文字を受け入れるかもしれない。 – zmbq

+0

は100%確かではありませんが、私が覚えているように、それはできません。私はそれにいくつかの問題があった。 \ wは例えばノルウェーのシンボルと一致しません。ユニコードを有効にする方法があります:http://www.regular-expressions.info/unicode.htmlしかし、私はそれを試していません。 – Sly

+2

どちらかわかりません。我々は[a-zA-Z]がうまくいくことを確信しているので、誰かがコードを読むようになるので、より良いことです。 – zmbq

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

。または、それだけでc < 128、あなたの問題に最も近いと思われる。

しかし、符号化の問題は、文字をフィルタリングすることで解決しています。他のアプリケーションが正確に理解していることを調べてください。

Encoding.GetEncoding(someCodePage)と書いてください。

+0

c <128ではそれ自体が非文字を返します –

-1

簡単にアクセスするための使用LINQの

if (yourString.All(char.IsLetter)) 
{ 
    //just letters are accepted. 
} 
私は、ファイルをエクスポートし、éなどの特殊な兆候がある場合は、エラーをスローし、別のアプリケーションにインポートする必要が
+2

Eh? OPは、Char.IsLetterが必要なことをしないと明示的に指摘しました。 –

関連する問題