Я также заметил это в nodejs. Я полагаю (и я допускаю, что это только предположение), что при компиляции кода, если x
не появляется внутри bar
, он не делает x
доступным в области bar
. Это, вероятно, делает его несколько более эффективным; проблема заключается в том, что кто-то забыл (или не заботился), что даже если в bar
нет x
, вы можете решить запустить отладчик и, следовательно, по-прежнему необходимо получить доступ к x
изнутри bar
.
В вашем текущем коде я абсолютно не знаю, что это должно делать:
let bulletPoint: String = "\u{2022}"
let attributedString = NSMutableAttributedString(string: bulletPoint)
formattedString.enumerateAttributes(in: NSRange(0..<attributedString.length), options: []) { (attributes, range, _) -> Void in
for (attribute, _) in attributes {
formattedString.removeAttribute(attribute, range: range)
}
}
Тот факт, что вы используете NSRange(0..<attributedString.length)
, должен вызвать сбой, если formattedString
короче чем attributedString
. Это пуля, поэтому у вас не должно быть проблемы, но все же.
Пуля •
или \u{2022}
создается после разбора, поэтому вам нужно проанализировать formattedString.string
, что вы могли бы сделать:
let regex = try! NSRegularExpression(pattern: "\\s\u{2022}\\s", options: [])
let matches = regex.matches(in: formattedString.string, options: [], range: NSMakeRange(0, formattedString.string.utf16.count))
matches.reversed().forEach { formattedString.replaceCharacters(in: $0.range, with: "")}
Я не понял, если вы хотите удалить только пули или остальную часть текста (другие пытались с помощью .replacingOccurrences(of: "Click to open image!", with: "")
просто убедиться, что вы действительно смогли достичь этой линии и удалить подстроки или нет.