【问题标题】:Prepare String for URL cast in Swift为 Swift 中的 URL 转换准备字符串
【发布时间】:2020-06-23 13:34:26
【问题描述】:

我有一个文本区域,其内容稍后将用于创建 URL。如何验证 url - cast 不会引发错误?有没有可以做到这一点的功能?例如删除所有无效字符。
我按以下方式转换字符串,但如果用户输入换行符,则转换不起作用:
let url: URL = URL(string: urlPath)!

【问题讨论】:

  • 我建议再次阅读有关选项的章节。 !强制解包,确实可以使您的程序崩溃。查找“可选绑定”!
  • 删除无效字符不会满足用户的要求。 http://example.com/url with spaces 无效,但将其转换为 http://example.com/urlwithspaces 不是答案。系统可以告诉你一个字符串是否是一个有效的 URL,但它不能告诉你用户体验应该是什么。你想限制输入(记住用户可以粘贴)?如果值错误,是否要显示错误?你想删除一些明显错误的东西(比如最后的换行符)吗?一旦您准确定义了体验,我们就可以针对具体案例提供帮助。
  • 是的,我会限制用户输入,因为它只是他们必须写的一个短语。我已经解决了空白问题,我只需要注意制表符或换行符。我想知道除了替换“\n”之外是否还有其他解决方案
  • 与您的问题无关,但您的代码中没有发生强制转换。您将String 传递给URL 的init,这不是强制转换。通过使用类型转换运算符 as 完成转换。
  • 用户如何在文本字段中输入换行符?

标签: swift url


【解决方案1】:

使用可选绑定 (https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html):

var str = "somescheme://somedata"

if let url = URL(string: str) {
    // handle url
} else {
    // handle error
}

如果要去除空格和换行符,请使用:

str.trimmingCharacters(in: .whitespacesAndNewlines)

【讨论】:

    猜你喜欢
    • 2018-04-07
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    相关资源
    最近更新 更多