将动态字符串转换为属性字符串

Convert the dynamic string to Attributed String

我想将此字符串转换为属性字符串。字符串是动态的。在这里,“数字”和“'”需要是蓝色。 5'和37'中的例子应该是蓝色。

"J. Schlupp 5', C. Benteke 37'"

func matches(for regex: String, in text: String) -> [String] {

    do {
        let regex = try NSRegularExpression(pattern: regex)
        let results = regex.matches(in: text,
                                    range: NSRange(text.startIndex..., in: text))
        return results.map {
            String(text[Range([=10=].range, in: text)!])
        }
    } catch let error {
        print("invalid regex: \(error.localizedDescription)")
        return []
    }
}

let baseString = "J. Schlupp 5', C. Benteke 37'"
let matched = matches(for: "[0-9]'", in: baseString)
print(matched)

这个returns下面的输出,从37号开始吧returns7'

["5\'", "7\'"]

我不会为你编写代码,但我会给你一个解决问题的想法:

  • 创建一个 NSRegularExpression 以在您的源字符串中查找 <number>' 的实例。 运行 它在您的字符串上查找那些子字符串的实例。

  • 从您的常规字符串创建一个 NSMutableAttributedString,然后使用 addAttributes(_:range:) 将您想要的属性(蓝色文本)应用到您的 NSRegularExpression 找到的范围


编辑:

尝试使用正则表达式“[0-9]+'”匹配一位或多位数字,后跟一个 ' 字符。