【问题标题】:Remove unicode symbols from NSMutableString从 NSMutableString 中删除 unicode 符号
【发布时间】:2016-10-10 13:21:48
【问题描述】:

我有一个生成的字符串(带有图像附件的 UITextView 的内容),需要将其保存到数据库中

let textView = UITextView()
textView.text = "some text"
let attString = NSMutableAttributedString(string: " ")
attString.replaceCharactersInRange(NSMakeRange(0, 1), withAttributedString: NSAttributedString(attachment: NSTextAttachment()))
textView.textStorage.insertAttributedString(attString, atIndex: textView.text.length)
print("\(textView.text)")

输出:“一些文本”。但是如果通过调试器查看 textView.text 的内容,文本中包含“some text\u{ef}”

如何从 textView.text 中删除 \u{ef} 并在 textView.text 中获取“一些文本”?

textView.text = textView.text.stringByReplacingOccurrencesOfString("\u{ef}", withString: "") 

没有达到预期效果

当前修复:

text = String(text.characters.filter() { $0 <= "~" })

【问题讨论】:

  • 字符串是如何获取和打印出来的?
  • 字符串来自具有图像属性的 UITextView 在 XCode 的调试模式下,当看到字符串内容时,它看起来像“\u{ef}some text\u{ef}”,但使用 print()看起来完全符合我的要求:“一些文字”
  • 请将所有相关信息(包括打印语句)添加到问题中,不要添加到cmets中。
  • 马丁,我在小测试中重现了情况,并在问题正文中插入了代码
  • 我无法用上面的代码重现这个。 (我什至无法编译上面的代码;这是为什么版本的 iOS 构建的?textView.text 返回String,它没有length。我想你的意思是textView.attributedText.length)事实上你的@ 987654328@ 语句的行为符合预期表明您在调试时遇到问题。您是否有实际程序行为出乎意料的示例?

标签: swift string unicode


【解决方案1】:

需要更多的定义才能真正了解您想要实现的目标以及这些字符如何出现在您感兴趣的字符串中。

如果您真的想重新编码字符串,可能会丢失诸如多字节字符之类的信息,那么您可以在 latin1 中对其进行编码(在没有详细说明您的数据库使用什么编码的情况下,这很可能是您的编码之后):

str.data(using: .isoLatin1, allowLossyConversion: true)

(……或者如果你想完全成为穴居人,str.data(using: .ascii, allowLossyConversion: true)——不过,你的问题还是很不清楚。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    相关资源
    最近更新 更多