如何拆分 NSAttributedString
How to split a NSAttributedString
我从 rtf 文件导入了一个 NSAttributedString,现在我想将它拆分为另一个给定的字符串。使用 attributedSubstring
方法你得到一个 attributedSubstring 作为结果,但我想在每个部分拆分它,在另一个 String 出现的地方,所以结果应该是一个 NSAttributedStrings 数组。
示例:
var source = NSAttributedString(string: "I*** code*** with*** swift")
var splitter = "***"
var array = //The method I am looking for
结果应该是以下 Array(with attributedStrings): [I, code, with, swift]
以下扩展方法将使用 Array.map
的字符串组件映射到 [NSAttributedString]
extension NSAttributedString {
func components(separatedBy string: String) -> [NSAttributedString] {
var pos = 0
return self.string.components(separatedBy: string).map {
let range = NSRange(location: pos, length: [=10=].count)
pos += range.length + string.count
return self.attributedSubstring(from: range)
}
}
}
用法
let array = NSAttributedString(string: "I*** code*** with*** swift").components(separatedBy: "***")
我从 rtf 文件导入了一个 NSAttributedString,现在我想将它拆分为另一个给定的字符串。使用 attributedSubstring
方法你得到一个 attributedSubstring 作为结果,但我想在每个部分拆分它,在另一个 String 出现的地方,所以结果应该是一个 NSAttributedStrings 数组。
示例:
var source = NSAttributedString(string: "I*** code*** with*** swift")
var splitter = "***"
var array = //The method I am looking for
结果应该是以下 Array(with attributedStrings): [I, code, with, swift]
以下扩展方法将使用 Array.map
的字符串组件映射到 [NSAttributedString]
extension NSAttributedString {
func components(separatedBy string: String) -> [NSAttributedString] {
var pos = 0
return self.string.components(separatedBy: string).map {
let range = NSRange(location: pos, length: [=10=].count)
pos += range.length + string.count
return self.attributedSubstring(from: range)
}
}
}
用法
let array = NSAttributedString(string: "I*** code*** with*** swift").components(separatedBy: "***")