删除部分属性字符串而不删除属性

时间:2017-12-05 22:06:26

标签: swift

我在我想要移除的属性字符串中有一些文字。如何在不删除属性的情况下执行此操作?

我尝试了什么:

我在SO(Replace substring of NSAttributedString with another NSAttributedString)上发现了这篇文章,其中OP正在寻找NSString的stringByReplacingOccurrencesOfString:withString:对于NSAttributedString的等效方法。我是Swift的新手,所以我无法理解接受的答案。

我转向了其他答案,如果它们不是用目标c编写的,那么它们就是我无法编译的方法。

这是我能够得到的。我在SO上找不到任何其他帖子来解决我的问题。

1 个答案:

答案 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";
}