中的部分,我想更-6ren">
gpt4 book ai didi

快速查找和更改属性字符串中的范围

转载 作者:行者123 更新时间:2023-11-30 11:15:54 24 4
gpt4 key购买 nike

更改此字符串的最佳方法是什么:

"gain quickness for 5 seconds. <c=@reminder>(Cooldown: 90s)</c> only after"

转换为属性字符串,同时删除 <> 中的部分,我想更改(冷却时间:90 秒)的字体。我知道如何更改和制作 NSMutableAttributedStrings,但在这种情况下我坚持如何定位和更改 (Cooldown: 90s)。 <c=@reminder> 之间的文本& </c>会改变,所以我需要使用它们来找到我需要的东西。

这些似乎是用于此目的的指标,我只是不知道。

最佳答案

首先,您需要一个正则表达式来查找和替换所有标记的字符串。

查看该字符串,一个可能的正则表达式可能是 <c=@([a-zA-Z-9]+)>([^<]*)</c> 。请注意,仅当标签之间的字符串不包含 < 时才有效。性格。

现在我们有了正则表达式,我们只需要把它应用到输入字符串上:

let str = "gain quickness for 5 seconds. <c=@reminder>(Cooldown: 90s)</c> only after"
let attrStr = NSMutableAttributedString(string: str)
let regex = try! NSRegularExpression(pattern: "<c=@([a-zA-Z-9]+)>([^<]*)</c>", options: [])
while let match = regex.matches(in: attrStr.string, options: [], range: NSRange(location: 0, length: attrStr.string.utf16.count)).first {
let indicator = str[Range(match.range(at: 1), in: str)!]
let substr = str[Range(match.range(at: 2), in: str)!]
let replacement = NSMutableAttributedString(string: String(substr))
// now based on the indicator variable you might want to apply some transformations in the `substr` attributed string
attrStr.replaceCharacters(in: match.range, with: replacement)
}

关于快速查找和更改属性字符串中的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51755718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com