我会收到很多消息字符串
喜欢这些:
1.hello {{http://i.imgur.com/f1cqT3ut.jpg}} world {{http://i.imgur.com/f1cqT3ut.jpg}}
2.hi {{http://i.imgur.com/iVx9iqjt.jpg}} {{http://i.imgur.com/iVx9iqjt.jpg}} how {{http://i.imgur.com/ZpXgxiXt.jpg}} are {{http://i.imgur.com/rcdHObKt.jpg}} you {{http://i.imgur.com/yX5dHdet.jpg}} ? {{http://i.imgur.com/2iZSBKGt.jpg}}
我想处理这些消息
喜欢这些:
现在我只知道可以使用NSMutableAttributedString来显示所有已处理的消息,并使用NSTextAttachment来显示url图像。
但我不知道如何更换和处理这些讯息。
请帮帮我。
感谢。
答案 0 :(得分:0)
如果你可以假设每个字符串都是这样设置的,那么单词和URL用空格分隔 - 并且URL都包含在两组花括号中,你可以创建一个方法然后取一个字符串并将其拆分为子串数组(以空格分隔),然后您可以检查以“{{”开头的子字符串,以了解它是一个URL。我刚刚写了这样的东西,它将返回一个元组数组,其中每个元组是一个整数(与子字符串数组中的URL的索引相关),以及一个表示从大括号中删除的URL的字符串。
func split(_ s: String) -> [(Int, String)] {
// Separate the original string into an array of substrings separated by a space
let separated = s.components(separatedBy: " ")
// Filter the separated array to find the URLs that start with {{
var urls = separated.filter{ $0.hasPrefix("{{") }
// Map the urls array to get an array of ints correlating to their respective indices from the separated array
let indicies = urls.map { separated.index(of: $0) }
// create an empty array of Int and String tuples
var tuples: [(Int, String)] = []
// Loop through the url array
for i in 0 ..< urls .count {
// Remove the left side (open) curly brackets
urls[i] = urls[i].replacingOccurrences(of: "{{", with: "")
// Remove the right side (close) curly brackets
urls[i] = urls[i].replacingOccurrences(of: "}}", with: "")
// Append the tuple with the url's index from the separated array and it's actual url value as a string
tuples.append((indicies[i]!, urls [i]))
}
return tuples
}
然后你可以使用它来分割网址中的单词,然后获取图像(这取决于你 - 可能使用Alamofire甚至只是NSURLSession
)然后因为你有他们的原始索引子串的数组 - 你仍然知道他们进入的顺序。所以一旦异步请求返回,就根据原始顺序重新排列它们,然后使用夹在UILabels
之间的UIImageViews
(或者反之亦然)以你正在尝试的方式显示内容。
答案 1 :(得分:0)
let fullString = NSMutableAttributedString(string : "start of text")
let image1Attachment = NSTextAttachment()
image1Attachment.image = UIImage(named : "image name")
let image1String = NSAttributedString(attachment: image1Attachment)
fullString.append(image1String)
fullString.append(NSAttributedString(string: "End of text"))
yourLabel.attributedText = fullString
此代码用于显示您想要的方式。根据需要使用参考工具代码。