すべてutf8 glyphs swift 3を使用して印刷するには?これを使用してスウィフト3のすべてのUTF8グリフ
は遅すぎる/時間がかかるようになります:
let G = "\u{0047}" // "G"
はそうすることの短い/よりエレガントな方法は何ですか?
すべてutf8 glyphs swift 3を使用して印刷するには?これを使用してスウィフト3のすべてのUTF8グリフ
は遅すぎる/時間がかかるようになります:
let G = "\u{0047}" // "G"
はそうすることの短い/よりエレガントな方法は何ですか?
UnicodeScalar型を使用して数値を使用して文字列を作成できます。 Swift Stringドキュメントによれば、U + 0000〜U + D7FF、U + E000〜U + 10FFFの範囲でUnicodeスカラーが定義されています。参照:https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/StringsAndCharacters.html
注
A UnicodeのスカラーがU + 0000 U + D7FF包括またはU + E000に含めU + 10FFFFの範囲内の任意のUnicodeコードポイントです。 Unicodeスカラーでは、 にUnicodeサロゲートペアコードポイントは含まれていません。コードポイントは、U + D800〜U + DFFFの範囲のコード です。コードポイントのほとんどが空になり、いくつかは、あなたのコンソール上に表示されない場合が
let range1From = Int("0", radix: 16)
let range1To = Int("D7FF", radix: 16)
print("Code points from U+0000 to U+D7FF")
for var code in stride(from: range1From!, to: range1To!, by: 1) {
if let scalar = UnicodeScalar(code) {
var string = "\(scalar)"
print(string)
}
}
print("Code points from U+E000 to U+10FFFF")
let range2From = Int("E000", radix: 16)
let range2To = Int("10FFFF", radix: 16)
for var code in stride(from: range2From!, to: range2To!, by: 1) {
if let scalar = UnicodeScalar(code) {
var string = "\(scalar)"
print(string)
}
}
注意してください。あなたは簡単に見を持っている第二のループでストライドの値によって変更することもできます。
for var code in stride(from: range2From!, to: range2To!, by: 100) {
これは、利用できるUnicodeコードポイントの全範囲を表示し、必要に応じて、あなただけに興味がある可能性がありU + 0000からU + D7FFの範囲(または範囲内であっても)。 。ちょうどあなたが興味を持っている範囲の値でrange1Fromとrange1To定数の値を変更
これを試してみてください:
let n = 1000
for i in 1...n {
if let scalar = UnicodeScalar(i) {
let str = String(stringInterpolationSegment: scalar)
print(str)
}
}
Unicodeは、現在およそ1Mの文字を格納できる17枚の平面を、定義していますが、only about 10% of that is allocated 。また、複数のコードポイントを組み合わせて1つの文字を作成することもできます(技術的には書記素クラスタ)。これは、2つのスカラーを使用しているにもかかわらず、1文字を定義します。
let char = "a\u{33c}"
print(char) // a̼
print(char.characters.count) // 1
ユニコードは非常に奇妙な獣です!
オプション( "\ u {02}") オプション( "\ u {03}")...希望の結果ではない – Carpsen90
Iアンラップを修正して、私のコンソールは明らかに自動的にアンラップしていた。また、利用可能なUnicodeコードポイントの全範囲の表示を追加しました。 – xpereta