<分区>
我有一个像 "abc1abc1"
这样的字符串。
我想做的是将字符串的每个数字加粗。我已经绘制了下面的代码。它的工作原理是将字符串的每个字符分开并将它们放入一个数组中。然后,在一个循环中,如果每个字符都包含一个 Int()
,则该字符被加粗。
但是,当有两个相同的 Int 时,问题就来了。在上面的字符串中,1
有 2 个字符,因此代码只会将第一个字符加粗。
// Bold the numbers
let fullString = "abc1abc1"
let characters = Array(fullString)
let mutableString = NSMutableAttributedString(string: fullString)
for item in characters {
let string = String(item)
let decimalCharacters = CharacterSet.decimalDigits
let decimalRange = string.rangeOfCharacter(from: decimalCharacters)
if decimalRange != nil {
let str = NSString(string: fullString)
let range = str.range(of: string)
mutableString.addAttribute(NSAttributedStringKey.foregroundColor, value: UIFont.systemFont(ofSize: 18, weight: .heavy), range: range)
}
}
instructionsLabel.attributedText = mutableString
// characters = ["a", "b", "c", "1", "a", "b", "c", "1"]
// range of ints returns {3, 1} and {3, 1}
// range of ints SHOULD return {3, 1} and {7, 1}