是否可以通过SwiftUI从文本中找到 标签 ? 这就是我的尝试:
这样调用函数:Text(convert(msg.findMentionText().joined(separator: " "), string: msg)).padding(.top, 8)
。
但这根本不起作用。
extension String {
func findMentionText() -> [String] {
var arr_hasStrings:[String] = []
let regex = try? NSRegularExpression(pattern: "(#[a-zA-Z0-9_\\p{Arabic}\\p{N}]*)", options: [])
if let matches = regex?.matches(in: self, options:[], range:NSMakeRange(0, self.count)) {
for match in matches {
arr_hasStrings.append(NSString(string: self).substring(with: NSRange(location:match.range.location, length: match.range.length )))
}
}
return arr_hasStrings
}
}
func convert(_ hashElements:[String], string: String) -> NSAttributedString {
let hasAttribute = [NSAttributedString.Key.foregroundColor: UIColor.orange]
let normalAttribute = [NSAttributedString.Key.foregroundColor: UIColor.black]
let mainAttributedString = NSMutableAttributedString(string: string, attributes: normalAttribute)
let txtViewReviewText = string as NSString
hashElements.forEach { if string.contains($0) {
mainAttributedString.addAttributes(hasAttribute, range: txtViewReviewText.range(of: $0))
}
}
return mainAttributedString
}
答案 0 :(得分:2)
您需要将Text()
与String
一起使用,但您尝试使用Array
的{{1}}对其进行初始化。
如果数组不为空,则可以只显示第一个:
String
或者您可以将elements数组合并为一个msg.findMentionText().first.map { Text($0) }
:
String