Day: January 7, 2016

Swift:なるほど、国旗絵文字!

国旗の絵文字が連続すると文字数カウントが正しく得られないという問題。

たとえば”🇺🇸🇯🇵⚽️⛔️😎🌀”のような文字列を一文字ずつ取り出そうとすると、🇺🇸🇯🇵が一文字で入ってきます。それから、文字数が6になります。

Swift countElements() return incorrect value when count flag emoji
You can separate the “flags” by a ZERO WIDTH SPACE:
let str1 = "🇩🇪\u{200B}🇩🇪"

絵文字入りの文字列の長さを取得する

文字数を正しく把握する対策はありそうですが、1文字ずつ取り出すには、文字コードを指定してやることになるのでしょうか?

自分のケースは文字列を取り出すことが目的ではなかったので、文字列をカンマで区切って対処しました。しかし、よくよく考えてみると、文字列に国旗を2個続けて並べられてしまうと、今度は障害として報告されることになります。対処療法的には、「国旗は必ず1文字だけ定義してください。当該アプリでは文字数のチェックはしません」?