【问题标题】:Strange Invisible Character in String causing NSURL to fail字符串中奇怪的不可见字符导致 NSURL 失败
【发布时间】:2015-04-28 08:46:52
【问题描述】:

我遇到了一个字符串到数字的问题,我需要几天时间才能解决。所以这一切都始于我的应用程序,它涉及从地址簿中获取电话号码并拨打电话。一切正常,直到我注意到一些电话号码导致我的程序崩溃。

一段时间后,我终于发现他们正在为其中有空格的电话号码而崩溃,这终于说得通了,因为即使它是一个电话号码,我也使用 NSURL 来调用“tel://(555 ) 555 5555" 之间有一个空格会使 URL 无效,从而导致我的程序崩溃。

现在我很高兴我解决了第二个问题,并决定做一个简单的字符替换,用“-”替换所有空格。这适用于我测试过的测试字符串,一切看起来都很好。我决定将它与我的代码挂钩,然后我的程序仍然崩溃。

然后我进行了一些调试,发现即使我的测试用例有效,我从 iOS 通讯录中提取的电话号码也没有替换空格。似乎用于分隔电话数字的任何字符都不是空格,或者至少不是我可以像这样简单输入的空格->“”

知道如何解决这个问题吗?要么(1)知道这个不可见字符到底是什么并替换它,要么(2)有没有办法将电话号码提取为所有数字而不是额外的字符“+(。)-”或这里的任何选项?

【问题讨论】:

    标签: ios string swift nsurl addressbook


    【解决方案1】:

    你必须使用 .stringByAddingPercentEscapesUsingEncoding 来转换特殊字符。

    let myLink = "http://google.com"
    
    let myUrl = NSURL(string: myLink.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)!
    

    【讨论】:

    • 天哪,谢谢!!!刚刚试了一下,它奏效了。我无法相信有时最小的事情会引起最大的头痛。这确实花了我几天的时间,让我慢了很多。我知道这一定很愚蠢。让我失望的是我的消息传递部分工作正常,直到我意识到消息传递不是使用 NSURL,所以结果不会相互影响。
    • 我会在我的 8 分钟计时器到时接受答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 2019-11-20
    相关资源
    最近更新 更多