2016-11-28 10 views
0

この文字列拡張は、ラテン文字でも機能しますが、キリル文字では機能しません。誰かが理由を説明することはできますか?どのように修正できますか?スウィフト文字列からASCII配列へCYRILIC

extension String { 
    var asciiArray: [UInt32] { 
     return unicodeScalars.filter{$0.isASCII}.map{$0.value} 
    } 
} 
+3

サンプル入力と予想される出力は何ですか?キリル文字をASCIIに変換することは意味がありません。あなたは、UTF-8、Unicodeスカラー、...したいですか? - おそらくフィルターを取り外すだけでいいですか? –

+1

* "ラテン文字で動作しますが、キリル文字では動作しません" * - どのように動作し、動作しないのですか? – luk2302

+1

キリル文字はASCII文字ではありません。 ASCIIは、すべての可能なUnicode文字のうち最初の255文字のみをカバーします。 – rmaddy

答えて

3

は、私はあなたがそのキリル拡張子(などKOI-8R)の一つで、元ASCII標準が混乱していると思います。元のASCIIは7ビットですが、拡張機能では127以上(最大255)のコードをその目的のために使います。

UnicodeScalarのSwiftのisASCIIプロパティは、スカラーが元のASCIIかどうかを示します。

関連する問題