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

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

过了一段时间,我终于意识到,他们正在崩溃的电话号码有一个空间,这终于明白了,因为即使它是一个电话号码,我使用NSURL来调用“tel://(555)5555555 “之间有一个空格将使网站无效,这是导致我的程序崩溃。

现在我很高兴我想出了第二个问题,并决定做一个简单的字符replace,用“ – ”replace所有的空格。 这工作testingstring我testing它,一切看起来不错。 我决定把这个备份到我的代码,然后我的程序仍然崩溃。

然后,我做了一些debugging,发现即使我的testing用例工作,我从iOS地址簿拉的电话号码没有被replace的空白。 似乎无论用什么字符来隔开电话号码都不是一个空格,或者至less不是一个空格,我可以简单地键入这样的 – >“”

任何想法如何解决这个问题? 要么(1)知道这个看不见的字符是什么,取而代之或(2)有没有办法只提取一个电话号码作为所有的数字,而不是额外的字符“+(。) – ”或在这里的任何选项?

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

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