字符串中奇怪的不可见字符导致NSURL失败

时间:2015-02-26 04:38:56

标签: ios string swift nsurl addressbook

我有一个字符串到数字问题,这需要我几天时间来解决。所以这一切都始于我的应用程序,涉及从地址簿中拨打电话号码并拨打电话。一切都工作正常,直到我发现一些电话号码导致我的程序崩溃。

过了一段时间后,我终于发现他们正在为那里有空格的电话号码而崩溃,这最终有意义,因为尽管这是一个电话号码我正在使用NSURL呼叫" tel:/ /(555)555 5555"并且它之间有空格会使URL无效,导致我的程序崩溃。

现在我很高兴我找到了第二个问题,并决定做一个简单的字符替换,用" - "替换所有空格。这适用于我测试它的测试字符串,一切看起来都很好。我决定将其重新连接到我的代码,然后我的程序仍在崩溃。

然后我做了一些调试并注意到即使我的测试用例工作,我从iOS地址簿中提取的电话号码也没有替换空白。似乎无论用什么字符来分隔手机数字都不是空格,或者至少它不是一个空白,我可以简单地输入这样的字体 - > " "

知道如何解决这个问题吗?要么(1)要知道这个看不见的角色究竟是什么并取而代之,要么(2)有没有办法只提取一个电话号码作为所有数字而不是额外的字符" +(。) - "或者这里的任何选择?

1 个答案:

答案 0 :(得分:1)

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

let myLink = "http://google.com"

let myUrl = NSURL(string: myLink.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)!