You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中如何修改String扩展实现过滤指定符号与所有emoji

实现方案

你可以直接调整原有过滤逻辑,先做emoji判断筛除所有表情,再走原有特殊字符过滤流程即可,修改后的代码如下:

完整扩展代码

extension String {
    func removeCharacters() -> String {
        let removeCharacters: CharacterSet = [" ", ";", ",", ":", ".", "!", "%", "$", "&", "#", "*", "^", "@", "(", ")", "/"]
        return self.filter { char in
            // 筛除所有带emoji展示属性的字符
            guard !char.isEmojiPresentation else { return false }
            // 保留不在指定移除字符集内的普通字符
            return char.unicodeScalars.allSatisfy { !removeCharacters.contains($0) }
        }
    }
}

改动说明

  • 完全保留了原有过滤指定特殊字符的功能,没有修改原有的字符移除规则
  • 新增前置判断逻辑,只要是符合isEmojiPresentation == true的字符都会被直接移除
  • 逐字符校验的逻辑兼容多字节emoji的识别,不会出现emoji过滤不完整的问题

注意事项

isEmojiPresentation是iOS 16.0+、macOS 13.0+才提供的系统属性,如果你的项目需要兼容更低系统版本,可以自行替换为低版本兼容的emoji判断逻辑即可。

使用示例

let originalStr = "😀Hello, 世界!🤣 今天是个好天气@2024"
let filteredStr = originalStr.removeCharacters()
// 输出结果:Hello世界今天是个好天气2024

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 13:24:02