string - Swift - 用空格替换字符串中的表情符号

标签 string swift unicode emoji

我有一个方法可以检测字符串中的 url 并返回 url 和可以找到它们的范围。一切都很完美,直到字符串上出现表情符号。例如:

"I'm gonna do this callenge as soon as I can swing again 😂😂😂\n http://youtu.be/SW_d3fGz1hk"

由于表情符号的原因,从文本中提取的网址为http://youtu.be/SW_d3fGz1而不是http://youtu.be/SW_d3fGz1hk 。我认为最简单的解决方案是将字符串上的表情符号替换为空白字符(因为我需要范围对于某些文本样式内容来说是正确的)。问题是,用 Swift 很难实现这一点(很可能我缺乏 Swift String API 的能力)。

我一直在尝试这样做,但似乎我无法从 unicode 点数组创建字符串:

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)
}

我处理这个问题的方式是否错误?替换表情符号是最好的解决方案吗?如果可以,我该怎么做?

最佳答案

swift 5

不要使用这种硬编码方式来检测表情符号。在 Swift 5 中您可以轻松做到

let inputText = "Some 🖐string 😂😂😂 with 👹👹 👹 emoji 🖐"

let textWithoutEmoij = inputText.unicodeScalars
    .filter { !$0.properties.isEmojiPresentation }
    .reduce("") { $0 + String($1) }

print(textWithoutEmoij) // Some string  with   emoji 

关于string - Swift - 用空格替换字符串中的表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59719525/

相关文章:

ios - 使用 Swift 从 NSString 中查找 String 作为 NSRange 的出现,结果 NSRange 将在 NSAttributedString 中使用

C# 字符串约定解析

ios - iOS 上不同尺寸的不同图像

python - 如何比较模型字段和选择中的 unicode 字符串? Django

javascript - 带有新行 '\n' 的 php echo 警报消息不起作用

java - 使用正则表达式查找斐波那契数列

swift - Storyboard约束不影响自定义 UiView 大小

ios - Swift 中的便捷初始化器

用于正则表达式的 Python 和 Unicode block

python - 在 Python 中转储到 JSON 时,字符串中的 Unicode 值被转义