如何创建具有多种格式的随机字符串?

How to create random string with multiple formats?

我需要创建一个随机字符串,其格式可以将任何字符串(包括括号()转换为 swift 上的另一种颜色:例如:

嘿(嘿):第一部分'Hey'很好,但我想把:(嘿)换成不同的颜色 如果我选择另一个字符串也一样

嗨(怎么了)....

并尝试了以下方法

let label = UILabel(frame: CGRect(origin: .zero, size: CGSize(width: 200, height: 50)))

let color = UIColor(white: 0.2, alpha: 1)
let attributedTextCustom = NSMutableAttributedString(string: "(\(String())", attributes: [.font: UIFont(name:"AvenirNext-Medium", size: 16)!, .foregroundColor: color]))
attributedTextCustom.append(NSAttributedString(string: " (\(String())", attributes: [.font: UIFont(name: "AvenirNext-Regular", size: 12)!, .foregroundColor: UIColor.lightGray]))
label.attributedText = attributedTextCustom

我正在寻找这样的行为(仅用于演示...):

您可以使用正则表达式 "\((.*?)\)" 查找括号之间单词的范围并将颜色属性添加到 NSMutableAttributedString:

let label = UILabel(frame: CGRect(origin: .zero, size: CGSize(width: 200, height: 50)))
let sentence = "Hello (Playground)"
let mutableAttr = NSMutableAttributedString(string: sentence, attributes: [.font: UIFont(name:"AvenirNext-Medium", size: 16)!, .foregroundColor: UIColor.black])

if let range = sentence.range(of: "\((.*?)\)", options: .regularExpression) {
    let color = UIColor(white: 0.2, alpha: 1)
    let attributes: [NSAttributedString.Key: Any] = [.font: UIFont(name:"AvenirNext-Medium", size: 16)!, .foregroundColor: color]
    mutableAttr.addAttributes(attributes, range: NSRange(range, in: sentence))
    label.attributedText = mutableAttr
}