2017-06-27 24 views
2

文字列にロシア語/キリル文字が含まれているかどうか確認したいと思います。文字がロシア語かどうか確認してください

text := "test" 
for _, r := range []rune(text) { 
    if r >= 'a' && r <= 'z' { 
     return True 
    } 
} 
return False 

キリル文字/ロシア語のアルファベットのためにそれを行うには、対応する方法は何です:ラテン文字については

、私はこの(擬似コード)のような何かをしますか?

+0

を動作するようです、あなたは(ちょうどたとえば、[リンク]を、このようなUnicodeのチャートを(私はあなたの入力がUnicodeであると仮定)、使用してみましたhttp://sites.psu.edu/symbolcodes/languages/europe/cyrillic/cyrillicchart/)?ちょうどあなたが興味を持っている値を繰り返してください。 –

答えて

8

これは

unicode.Is(unicode.Cyrillic, r) // r is a rune 
+2

これは行く方法です。 ᴫU + 01D2Bのような奇妙な球体、U + 0A640とU + 00460の巨大な範囲を含むキリル文字の全範囲を捉えています。 – Schwern

0

私はthis Unicode chartに基づいてロシア語の大文字文字を見つけるためのこの実装例を、上行っていた:

func isRussianUpper(text string) bool { 
    for _, r := range []rune(text) { 
     if r < '\u0410' || r > '\u042F' { 
      return false 
     } 
    } 
    return true 
} 

あなたは任意の文字セットをこの方法で行うことができます。ちょうどあなたが興味を持っている文字のコードを変更します。

+0

ロシアのアルファベットのいくつかの文字はラテン文字のように見えるので(oまたはAのように)、私はもっと複雑な何かをしなければならないと思った – Thomas

+2

キリル文字その範囲の。 U + 00460(その範囲は上部と下部が交互に変わります)、U + 01D2B、U + 0A640のいずれかがあります。さらに多くを追加することができます。 [ハードコーディング範囲を避け、 'unicode.Is(unicode.Cyrillic、r)'を代わりに使用する](https://stackoverflow.com/a/44789675/14660)。大文字と小文字を区別するために、 'unicode.IsUpper'と' unicode.IsLower'を使用してください。 – Schwern

関連する問題