私は文字列内のURLを検出し、見つけられるURLと範囲の両方を返すメソッドを持っています。文字列に絵文字があるまで、すべてが完全に機能します。たとえば、次の理由絵文字のSwift - 文字列中の絵文字を空白に置き換える
"I'm gonna do this callenge as soon as I can swing again \n http://youtu.be/SW_d3fGz1hk"
、テキストから抽出されたURLはhttp://youtu.be/SW_d3fGz1の代わりhttp://youtu.be/SW_d3fGz1hkです。私は、最も簡単な解決策は、文字列のemojisを空白文字で置き換えることだと考えました。問題は、これはSwiftで達成するのが非常に難しいことです(Swift String APIを使用した私の能力は不足している可能性が高いです)。
私はこのようにそれをやろうとしてきたが、私はユニコード点の配列から文字列を作成することができないようです。
var emojilessStringWithSubstitution: String {
let emojiRanges = [0x1F601...0x1F64F, 0x2702...0x27B0]
let emojiSet = Set(emojiRanges.flatten())
let codePoints: [UnicodeScalar] = self.unicodeScalars.map {
if emojiSet.contains(Int($0.value)) {
return UnicodeScalar(32)
}
return $0
}
return String(codePoints)
}
私はこの問題に間違った方法に近づいているだろうか? emojisをここで最高のソリューションに置き換えていますか?もしそうなら、どうしたらいいですか?
ほぼ! "Svsbsvs shsbsv \ nhttp://m.youtube.com/watch?v = H6_zvQQ5P8w" \tという文字列は、 "Svsbsvs shsbsv \ nhttp://m.youtube.com/watch?v = H6_zvQQ5P8w" – Raphael
という文字列が表示されます。私はいくつかの範囲を行方不明になった: らemojiPatterns = [UnicodeScalar(0x1F600)... UnicodeScalar(0x1F64F)、 UnicodeScalar(0x1F300)... UnicodeScalar(0x1F5FF)、 UnicodeScalar(0x1F680)... UnicodeScalar(0x1F6FF)、 UnicodeScalar(0x26FF)、 UnicodeScalar(0x2700)... UnicodeScalar(0x27BF)、 UnicodeScalar(0xFE00)... UnicodeScalar(0xFE0F) – Raphael
ああ、私は私の答えに含めるべきだった私は単純にあなたの質問から絵文字の範囲を適用し、私の答えでこれらを使用するための技術を説明していますが、範囲が網羅的かどうかを決して知ることはできません!あなたの編集をありがとう! – dfri