【发布时间】:2021-01-14 15:47:37
【问题描述】:
我想将 invalid URLs 折射为 valid 个如果可能,否则只返回一个空的 String。
这里有 5 个例子:
请以你的名字呼唤我 https://www.amazon.de/dp/B07B58SGWP/ref=cm_sw_r_cp_api_fabc_iCJ6Fb0QVVW8Y?_encoding=UTF8&psc=1
https://farfetch.onelink.me/yQyB/b9f5e5d2?af_dp=https%3A%2F%2Fwww.farfetch.com%2Fshopping%2Fitem-16119737.aspx&af_web_dp=https%3A%2F%2Fwww.farfetch.com%2Fitem-16119737.aspx Shoppen Golden Goose 'Hi Star' 运动鞋
Schau dir LANDSKRONA von IKEA an。 Hier noch weitere 信息: https://ingka.page.link/gqV9dAw61TqNJrne9
https://www.apple.com/de/shop/buy-ipad/ipad-air/64gb-grün-wifi
所以我对此进行了讨论,我需要一个函数,将String 剥离为实际的URL(仅前三个示例),但还要折射那些不能在有效@987654330 中的字母@。我主要在第二个中挣扎。我不太明白为什么这些不能在valid Swift URL 中重新生成,即使它们可以在普通的网络浏览器中打开......
感谢任何帮助!
【问题讨论】:
-
克里斯,你不应该这样做!在任何情况下,首先,避免在支持或任何主要来源中创建无效的 URL 字符串(例如,手动将 URL 字符串键入表单中的文本输入字段等的人。 )。客户端的任何“修复”都只能是一个脆弱的创可贴,它可能在今天起作用,但在一周后就不行了。因此,在客户端,您应该净获取语法上无效的 URL。
-
我知道,我现在正在避免它。但是我的数据库中已经有一些错误的 url,我需要更改它们。数量不多,大概50-100个吧。但我需要改变它们。
-
而且,现在所有这 5 个示例在我的应用程序中都无效,因此用户会收到一些错误消息提示。但这并不是我想要的,因为示例中实际上存在有效的 URL,我只需要提取它们。我希望我在这里有道理@CouchDeveloper:D
-
前 3 个是:
let candidateURL = thatString.components(separator: .whiteSpacesAndNewLines).first(where: { URL($0) != nil }),但未针对编译器进行测试。 -
如果这个数据库在后端,那么,打印出所有无效的 URL。手动提取错误的路径组件,然后使用工具应用适当的百分比编码。如果金额小于 20 或 100,您可能会在尝试使用脚本解决之前完成。