gpt4 book ai didi

ios - NSAttributedString 中的颜色主题标签

转载 作者:行者123 更新时间:2023-11-28 21:11:34 24 4
gpt4 key购买 nike

我有一个标签,上面有普通文本和主题标签。我希望主题标签具有不同的颜色,所以我做了这样的事情:

let text = "#hellothere I am you. #hashtag #hashtag2 @you #hashtag3"
let words = text.components(separatedBy: " ")
let attribute = NSMutableAttributedString.init(string: text)
for word in words {
let range = (text as NSString).range(of: word)
if word.hasPrefix("#") {
attribute.addAttribute(NSForegroundColorAttributeName, value: UIColor.red, range: range)
}
}
label.attributedText = attribute

但是,当我使用这个逻辑时,结果是不一致的。有时,主题标签会按预期着色,有时包含主题标签的单词的某些部分会与下一个单词的某些部分一起着色。我正在寻找一种解决方案,我可以在其中确定单词中是否有“#”字符(仅在单词中第一次出现),然后为主题标签中的单词着色,直到下一个空格、逗号、分号、句号或字符串结尾,以适用者为准。

最佳答案

这需要一个正则表达式。 Swift 3 中的示例。

let attrStr = NSMutableAttributedString(string: "#hellothere I am you. #hashtag, #hashtag2 @you #hashtag3")
let searchPattern = "#\\w+"
var ranges: [NSRange] = [NSRange]()

let regex = try! NSRegularExpression(pattern: searchPattern, options: [])
ranges = regex.matches(in: attrStr.string, options: [], range: NSMakeRange(0, attrStr.string.characters.count)).map {$0.range}

for range in ranges {
attrStr.addAttribute(NSForegroundColorAttributeName, value: UIColor.yellow, range: NSRange(location: range.location, length: range.length))
}

attrStr

将上面的代码粘贴到 playground 中并查看输出。要查看正在运行的正则表达式,请尝试这个 link .

关于ios - NSAttributedString 中的颜色主题标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42872815/

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