swift 过滤字符串_Swift3 如何 字符串中 过滤emoji表情

http://stackoverflow.com/questions/38408645/swift-regex-to-match-unicodes

The Unicode code point of the emoji you have shown is U+1F600.

And your regex pattern (which may work for UTF-16 representation) [\uD800-\uDBFF\uDC00-\uDFFF] matches all non-BMP characters — U+10000…U+10FFFF, which contains most of all emojis but also contains huge non-emoji characters.

So, as you say “[\uD800-\uDBFF\uDC00-\uDFFF]” was working, the equivalent pattern in NSRegularExpression is "[\\U00010000-\\U0010FFFF]".

var s="? emoji ?"

let regex = try! NSRegularExpression(pattern: "[\U00010000-\U0010FFFF]", options: [])

let replaced = regex.stringByReplacingMatchesInString(s, options: [], range: NSRange(0.."* emoji *"

(Addition) To see Unicode code points in your string literal:

s.unicodeScalars.forEach {

print(String(format: "U+%04X ", Int($0.value)))

}

For your example string, I get:

U+1F600

U+0020

U+0065

U+006D

U+006F

U+006A

U+0069

U+0020

U+1F600

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值