将字符串中的整数设为粗体 - swift

Make Ints within a string bold - swift

你好,我有一个字符串显示在标签中,显示这样的时间 "4hours 27mins 45secs" 这可能会根据时间而变化,例如 "30mins 5secs"

我想为字符串中的 Int 设置样式,使它们加粗,字符变浅,因此看起来像这样...

我进行了一些搜索,发现我需要使用某种属性字符串,但我发现的所有内容似乎都使用某种中断字符或标准前缀来检测。

因为我也没有,所以有没有办法检查字符是否为 int 并应用粗体。意识到这可能是不可能的,欢迎提出改变我的方法的建议。

对 coding/swift 还是很陌生,所以非常感谢您的帮助!

如果你的部署目标是iOS15你可以使用新添加的AttributedString支持markdown,这比使用起来非常复杂NSAttributedString简单多了。

https://developer.apple.com/documentation/foundation/attributedstring

很快,您可以使用正则表达式来查找所有数字的范围。然后,在这些范围内,您更改粗体字体的属性。

let attributedString = NSMutableAttributedString(string: str, attributes: [.foregroundColor: UIColor.white])
let regex = try! NSRegularExpression(pattern: "\d+", options: [])
let matches = regex.matches(in: attributedString.string, options: [], range: NSRange(location: 0, length: attributedString.length))
matches.forEach {
    attributedString.addAttributes([.font: UIFont.boldSystemFont(ofSize: 17)], range: [=10=].range)
}