美文网首页
Swift 字符串 截取 半个表情emoji \u0000fff

Swift 字符串 截取 半个表情emoji \u0000fff

作者: rztime | 来源:发表于2022-06-13 15:02 被阅读0次

    UITextField(UITextView) 在做输入字符串长度限制时
    有两种长度需求限制:

    1. String.count :中文、英文、表情emoji都长度都算一个
    2. (String as NSString).length: 中文、英文长度算1,表情emoji长度为2、4、7等等

    如果为1的情况,一般没有问题

    主要为2的情况下,

    // text:Optional("123456789😒")
    let newText = (text as NSString).substring(to: 10)
    

    这个newText会截取到半个表情emoji,会显示

    text:Optional("123456789�")
    

    后边这个“�”是我们不需要的错误的半个表情emoji

    如何剔除:

    newText = (text as NSString).substring(to: maxLength)
    /// 有可能会截取到半个表情,所以这里剔除掉半个表情的情况
    if let data = newText.data(using: .utf8), let temp = NSString.init(data: data, encoding: String.Encoding.utf8.rawValue), temp.contains("\u{0000fffd}") {
      newText = temp.replacingOccurrences(of: "\u{0000fffd}", with: "") as String
    }
    

    emoji截取半个之后,转换成utf-8,再解码, 成为”\U0000fffd“, 此时替换移除

    相关文章

      网友评论

          本文标题:Swift 字符串 截取 半个表情emoji \u0000fff

          本文链接:https://www.haomeiwen.com/subject/pluomrtx.html