我试图找到属性字符串中具有url属性的字符串数。例如,我有这样的事情:@"你好,我的名称是Michael"。
名称是一个包含url属性的字符串,如{URL:" www.google.com"}。
我想在我的属性字符串中找到包含网址的字符串数量。 我试图在我的字符串上使用enumerateAttributes,但这只返回了适用于整个字符串的属性。当我打印出我的字符串时,我可以清楚地看到有这个属性的字符串。我怎样才能访问它们?
答案 0 :(得分:1)
你很亲密。为此,您可以使用enumerateAttribute(_:in:options:using:)
方法。您传入了您感兴趣的属性(在您的情况下为.link
),并使用范围和属性值调用字符串的每个子范围的闭包。这包括没有该属性的子范围。在这种情况下,将为值传递nil
。因此,要计算字符串中的链接,需要计算非零属性:
func linksIn(_ attributedString: NSAttributedString) -> Int {
var count = 0
attributedString.enumerateAttribute(.link, in: NSRange(location: 0, length: attributedString.length), options: []) { attribute, _, _ in
if attribute != nil {
count += 1
}
}
return count
}