Swift - 从字符串中删除空格不起作用

Mon*_*WTF 4 xcode ios swift

我正在尝试从字符串中删除空格和一些字符,请检查下面的代码

// giving phoneString = +39 333 3333333
var phoneString = ABMultiValueCopyValueAtIndex(phone, indexPhone).takeRetainedValue() as! String

// Remove spaces from string
phoneString = phoneString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())

// Remove +39 if exist
if phoneString.rangeOfString("+39") != nil{
    phoneString = phoneString.stringByReplacingOccurrencesOfString("\0", withString: "+39", options: NSStringCompareOptions.LiteralSearch, range: nil)
}

print(phoneString) // output +39 333 3333333
Run Code Online (Sandbox Code Playgroud)

好像所有的变化对我的字符串都没有影响,为什么会这样呢?

编辑@VS

屏幕

编辑2:

我试图在utf 8中转换我的字符串,检查结果:

43 51 57 194 160 51 51 51 194 160 51 51 51 51 51 51 51
Run Code Online (Sandbox Code Playgroud)

哪里:

43 = +
51 = 3
57 = 9
160 = space
194 = wtf?!? is this?
Run Code Online (Sandbox Code Playgroud)

use*_*734 6

你想做什么的

// your input string
let str = "+39 333 3333333"

let arr = str.characters.split(" ").map(String.init) // ["+39", "333", "3333333"]
// remove country code and reconstruct the rest as one string without whitespaces
let str2 = arr.dropFirst().joinWithSeparator("") // "3333333333"
Run Code Online (Sandbox Code Playgroud)

过滤掉国家/地区代码,仅在存在的情况下(如Eendje要求)

let str = "+39 123 456789"
let arr = str.characters.split(" ").map(String.init)
let str3 = arr.filter { !$0.hasPrefix("+") }.joinWithSeparator("") // "123456789"
Run Code Online (Sandbox Code Playgroud)

更新,根据您的更新.160表示不易破碎的空间.只需修改我的代码中的下一行

let arr = str.characters.split{" \u{00A0}".characters.contains($0)}.map(String.init)
Run Code Online (Sandbox Code Playgroud)

有一个" \u{00A0}".characters.contains($0)表达式,您可以根据需要将字符串扩展为尽可能多的空格字符.160是这里的详细信息.

Swift 4的更新

String.characters已弃用.所以现在正确的答案是

// your input string
let str = "+39 333 3333333"

let arr = str.components(separatedBy: .whitespaces) // ["+39", "333", "3333333"]
// remove country code and reconstruct the rest as one string without whitespaces
let str2 = arr.dropFirst().joined() // "3333333333"
Run Code Online (Sandbox Code Playgroud)