Open3

Swift: Stringから絵文字を除外する

kabeyakabeya

Geminiからの応答を読み上げる処理を作っていますが、こいつ、答えに絵文字を入れてきよるのです。

私:回答から絵文字を除外してください
Gemini:了解しました! 今後、回答から絵文字を除外して答えますね。 😊

ギャクかよ…
ともかく、上記の回答を読み上げると、絵文字の部分も読み上げてしまってかなり邪魔くさいんですね。

let text = "了解しました! 今後、回答から絵文字を除外して答えますね。  😊"
var emojiRemoved = text
emojiRemoved.removeAll(where: { character in
    for scalar in character.unicodeScalars {
        if scalar.properties.isEmoji {
            return true
        }
    }
    return false
})

文字(キャラクタ)は合字の場合があるので、1文字が複数スカラー値で構成されていることがあります。
「1️⃣」のような奴ですね。
そのスカラー値が1個でも絵文字の場合は、その文字全体を絵文字としてみなす、というようなことにしています。

kabeyakabeya

これダメですね。数字に対してisEmojitrueになります。

kabeyakabeya

https://stackoverflow.com/questions/30757193/find-out-if-character-in-string-is-emoji

scalar.value0x203c以上という条件も追加しろって書いてあります。

let text = "了解しました! 今後、回答から絵文字を除外して答えますね。  😊"
var emojiRemoved = text
emojiRemoved.removeAll(where: { character in
    for scalar in character.unicodeScalars {
        if scalar.properties.isEmoji && 0x203c <= scalar.value {
            return true
        }
    }
    return false
})

ですね。