swift - 字母在字符串复制中的范围位置

标签 swift string

<分区>

我有一个像 "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}

最佳答案

试试这个:

let fullString = "abc1abc1"
let range = NSRange(location: 0, length: (fullString as NSString).length)
let mutableString = NSMutableAttributedString(string: fullString)
let regex = try! NSRegularExpression(pattern: "[0-9]")
let matches = regex.matches(in: fullString, range: range)

for match in matches {
    mutableString.addAttributes([.font: UIFont.systemFont(ofSize: 18, weight: .heavy)], range: match.range)
}

instructionsLabel.attributedText = mutableString

关于swift - 字母在字符串复制中的范围位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53239337/

相关文章:

java - 执行各种字符串操作的有效方法

c++ - 字符串操作——将字符串追加到自身

c++ 在不使用 char 数组的情况下将 std::string 转换为 int、double 等

python - 使用正则表达式提取字符串位置Python

ios - 不断增长的 UIWebView 导致 "Received memory warning."并最终使应用程序崩溃 "Terminated due to Memory Error"

ios - viewDidLoad 中的代码在每次调用时运行

ios - 我无法使用类(通过创建实例)从一个 View Controller 执行到另一个 View Controller 的连接

ios - 尝试使用 AVAudioPlayer 快速播放音频时出错

ios - UITableViewHeaderFooterView 不支持 nib 中的自动布局约束

c - 从指针生成整数而不进行强制转换