【问题标题】:Get the number of strings that have a url attribute in an attributed string获取属性字符串中具有 url 属性的字符串数
【发布时间】:2018-03-28 18:11:19
【问题描述】:

我正在尝试在属性字符串中查找具有 url 属性的字符串的数量。例如,我会有这样的内容:@“你好,我的 name 是 Michael”。

name 是一个带有类似 {URL: "www.google.com"} 的 url 属性的字符串。

我想在我的属性字符串中找到带有 url 的字符串的数量。 我尝试在我的字符串上使用 enumerateAttributes ,但这仅返回适用于整个字符串的属性。当我打印出我的字符串时,我可以清楚地看到有这个属性的字符串。我怎样才能访问它们?

【问题讨论】:

    标签: ios cocoa-touch nsattributedstring


    【解决方案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
    }
    

    【讨论】:

    • 啊是的,我自己想出来的,但这是我用的正确答案
    猜你喜欢
    • 2011-04-12
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 2020-09-29
    • 2018-11-28
    • 1970-01-01
    相关资源
    最近更新 更多