我在我想要移除的属性字符串中有一些文字。如何在不删除属性的情况下执行此操作?
我尝试了什么:
我在SO(Replace substring of NSAttributedString with another NSAttributedString)上发现了这篇文章,其中OP正在寻找NSString的stringByReplacingOccurrencesOfString:withString:对于NSAttributedString的等效方法。我是Swift的新手,所以我无法理解接受的答案。
我转向了其他答案,如果它们不是用目标c编写的,那么它们就是我无法编译的方法。
这是我能够得到的。我在SO上找不到任何其他帖子来解决我的问题。
答案 0 :(得分:3)
要删除部分属性字符串,您需要使用NSMutableAttributedString deleteCharacters(in:)
方法。
以下是一些示例代码:
// Create some attributes string
let attrs: [NSAttributedStringKey: Any] = [ .foregroundColor: UIColor.red, .font: UIFont.systemFont(ofSize: 24) ]
let attrStr = NSAttributedString(string: "Hello there", attributes: attrs)
print(attrStr)
// Create a mutable attributed string, find the range to remove and remove it
let mutStr = attrStr.mutableCopy() as! NSMutableAttributedString
let range = (mutStr.string as NSString).range(of: " there")
mutStr.deleteCharacters(in: range)
print(mutStr)
输出:
Hello there{ NSColor = "UIExtendedSRGBColorSpace 1 0 0 1"; NSFont = "<UICTFont: 0x7f989541d6c0> font-family: \".SFUIDisplay\"; font-weight: normal; font-style: normal; font-size: 24.00pt"; } Hello{ NSColor = "UIExtendedSRGBColorSpace 1 0 0 1"; NSFont = "<UICTFont: 0x7f989541d6c0> font-family: \".SFUIDisplay\"; font-weight: normal; font-style: normal; font-size: 24.00pt"; }