Как разделить NSAttributedString - PullRequest
0 голосов
/ 02 мая 2019

Я импортировал NSAttributedString из rtf-файла, и теперь я хочу разделить его на другую заданную строку. С помощью метода attributedSubstring в качестве результата вы получите один attributedSubstring, но я хочу разделить его на каждую часть, где появляется другая строка, поэтому результатом должен быть массив NSAttributedStrings. Пример:
var source = NSAttributedString(string: "I*** code*** with*** swift") var splitter = "***" var array = //The method I am looking for Результатом должен быть следующий массив (с attribuStStrings): [I, code, with, swift]

1 Ответ

1 голос
/ 07 мая 2019

Следующий метод расширения отображает строковые компоненты, используя 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: $0.count)
            pos += range.length + string.count
            return self.attributedSubstring(from: range)
        }
    }
}

Использование

let array = NSAttributedString(string: "I*** code*** with*** swift").components(separatedBy: "***")
...