gpt4 book ai didi

ios - 从字符串中获取特定值并创建数组

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

从某个 URL 创建一个字符串数组,我想从这些字符串中获取一些数据并将它们转换为另一个变量数组。

我的字符串数组如下所示:

#EXTINF:-1 tvg-logo="https://www.thetvdb.com/banners/posters/248741-9.jpg" group-title="Broke Girls", trailer
#EXTINF:-1 tvg-logo="https://www.thetvdb.com/banners/posters/210841-10.jpg" group-title="Alphas", Alphas trailer
#EXTINF:-1 tvg-logo="https://www.thetvdb.com/banners/posters/309053-2.jpg" group-title="American Gothic", trailer

每一行代表数组中的一个新字符串项。

我正在尝试创建一个函数来执行此操作,但到目前为止,我只有这个:

func grabValuesFromUrl(savedUrl: String) {
var trailersArray = []()

if let url = URL(string: savedUrl) {
do {
let contents = try String(contentsOf: url)
contents.enumerateLines { (line, stop) in


// here i need to grab the values from every string inside tvg-logo="", group-title="", and the last one after "," that's the title, and put them into trailersArray[], afterwards i will make some model class to get the data like trailersArray.logo and trailersArray.group and trailersArray.title


}
} else {
print("no url added")
}
}

提前致谢

最佳答案

我会使用正则表达式来处理与从已知格式的字符串中提取数据相关的任何事情。为此,我们首先定义辅助函数:

func matches(for regex: String, inText text: String) -> [String] {
guard let regex = try? NSRegularExpression(pattern: regex, options: [.caseInsensitive]) else { return [] }
let nsString = text as NSString
let results = regex.matches(in: text, options: [], range: NSMakeRange(0, nsString.length))
return results.flatMap { result in
(0..<result.numberOfRanges).map {
result.range(at: $0).location != NSNotFound ? nsString.substring(with: result.range(at: $0)) : ""
}
}
}

然后定义将提取所需数据的正则表达式:

let regex = "^.*tvg-logo=\"(.+)\".*group-title=\"(.+)\".*, (.+)$"

请注意,此正则表达式对数据格式很敏感,因此您必须将其调整为新的格式,以防发生更改。

最后,在您的行枚举闭包中,您可以提取数据:

let parts = matches(for: regex, inText: line).dropFirst()

parts 现在是一个包含三个相应项目的数组(如果该行与正则表达式匹配,我们将删除第一个项目,因为它是该行本身),因此我们可以附加一个元组数组的值:

if parts.count == 3 {
trailersArray.append((logo: parts[0], group: parts[1], title: parts[2]))
}

关于ios - 从字符串中获取特定值并创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49118682/

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