字符串替换手机号码iOS swift

我从“联系人”导入电话号码并保存在NSString 。 这个字符串包含空格,我尝试使用以下方法删除它们:

 numero = numero.stringByReplacingOccurrencesOfString(" ", withString: "") 

这种方法不起作用。


 func sostituisci( stringa: NSString! ) -> NSString { var numero: NSString = "" NSLog(stringa) numero = ((stringa as String).stringByReplacingOccurrencesOfString(" ", withString: "") as NSString) NSLog(numero) return numero } 

输出不变


日志

 2014-11-05 17:54:50.734 HappyRicarica[33438:3119446] (327) 124-3503 2014-11-05 17:54:50.737 HappyRicarica[33438:3119446] (327) 124-3503 

我怀疑你的字符串中的空格字符实际上不是空格。 尝试在NSLog(string)之后添加此内容,以查看NSLog(string)的unicode标量值:

 for uni in (stringa as String).unicodeScalars { println("\(uni) = \(uni.value)") } 

“(327)124-3503”的预期输出为:

 ( = 40 3 = 51 2 = 50 7 = 55 ) = 41 = 32 1 = 49 2 = 50 4 = 52 - = 45 3 = 51 5 = 53 0 = 48 3 = 51 

从您的评论中,您的空间值为160而不是32.您可以删除它:

 numero = stringa.stringByReplacingOccurrencesOfString(String(Character(UnicodeScalar(160))), withString: "") 

更新: Xcode 7.2•Swift 2.1.1

 extension String { var numbersOnly: String { return componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: "1234567890") .invertedSet) .joinWithSeparator("") } var numbersExempt: String { return componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: "1234567890")) .joinWithSeparator("") } var charactersOnly: String { return componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").invertedSet).joinWithSeparator("") } var charactersExempt: String { return componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")).joinWithSeparator("") } func keep(keepIt: String) -> String { return componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: keepIt).invertedSet).joinWithSeparator("") } func exclude(excludeIt: String) -> String { return componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: excludeIt)).joinWithSeparator("") } } let phoneNumber = "+1 (555) 555 - 5555".numbersOnly print(phoneNumber) // "15555555555" let excludePlusMinus = "+1 (555) 555-5555".exclude("+-") // "1 (555) 5555555" let keepWhatever = "+1 (555) 555-5555".keep("()-+") // "+()-" 

您还可以使用您的函数仅通过一些调整减去空格。 试试这样:

 func sostituisci(stringa: String) -> String { return stringa.stringByReplacingOccurrencesOfString(" ", withString: "") } sostituisci("1 234 567 8901") // "12345678901" 

或者像一个扩展名:

 extension String { var sostituisci: String { return stringByReplacingOccurrencesOfString(" ", withString: "") } } let phoneNumber2 = "1 234 567 8901".sostituisci 

NSString不是String ,所以你应该使用:

 numero = ((numero as String).stringByReplacingOccurrencesOfString(" ", withString: "") as NSString) 

你试过了吗 :

 let str = "XX XX XX XX XX" let separated = str.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) let finalStr = "".join(separated)