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

时间:2018-12-14 15:46:33

标签: swift random stringwithformat

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

嘿(嘿):第一部分“嘿”很好,但我想将:(嘿)更改为其他颜色 如果我选择另一个字符串也是如此

嗨(怎么了)....

并尝试了以下

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

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

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式"\\((.*?)\\)"查找括号之间的单词范围,并将color属性添加到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
}