Arrays 消除数组中的空格。它不工作

Arrays 消除数组中的空格。它不工作,arrays,swift,Arrays,Swift,我从一个矩阵联系人那个里得到这个数字,每个人都有一个人的号码,但我的问题是我想要原始的号码,以便我能和另一个矩阵匹配 for a in contacts { let content: String = a.phone let result1 = content.stringByReplacingOccurrencesOfString("(", withString:"") let result2 = result1.string

我从一个矩阵联系人那个里得到这个数字,每个人都有一个人的号码,但我的问题是我想要原始的号码,以便我能和另一个矩阵匹配

       for a in contacts 

{
        let content: String = a.phone

        let result1 = content.stringByReplacingOccurrencesOfString("(", withString:"")
        let result2 = result1.stringByReplacingOccurrencesOfString(")", withString:"")
        let result3 = result2.stringByReplacingOccurrencesOfString("-", withString:"")
        let result4 = result3.replace(" ", replacement: "")




        println(result4)


       // newNames.append(result4)
      //contador=contador+1
    }
   //result[555 555,999 3188,999 1]
那么,为什么不消除空格呢?为什么如果其他条件运行良好,我也会使用:

let result4 = result3.stringByReplacingOccurrencesOfString(" ", withString: "") 
为什么它不起作用


//结果[555 555999 3188999 1]

您使用的是不同的API,
replace()

使用工作API,
stringByReplacingOccurrencesOfString()

锁链 请注意,您可以在Swift中使用链条,这会更加优雅

let cleanNumber = content
  .stringByReplacingOccurrencesOfString("(", withString:"")
  .stringByReplacingOccurrencesOfString(")", withString:"")
  .stringByReplacingOccurrencesOfString("-", withString:"")
  .stringByReplacingOccurrencesOfString(" ", withString:"")
过滤和映射 另外,请注意更加简洁的
过滤器
映射
API

let content = "(459) 333-4938"
let cleanNumber = content.characters.filter {
    ![" ", "-", "(", ")"].contains($0)
}.map { String($0) }.joinWithSeparator("")
// "4593334938"
NSCharacterSet 还有旧的
NSCharacterSet
技巧:

let illegal = NSCharacterSet(charactersInString: "1234567890").invertedSet
let cleanNumber = content
   .componentsSeparatedByCharactersInSet(illegal)
   .joinWithSeparator("")
// "4593334938"

您可以尝试扩展
String
,以包含用于删除字符列表的函数

对于Swift 1.2(非2):


OP确实说他尝试了
让result4=result3.stringByReplacingOccurrencesOfString(“,with string:”)
但没有成功。这是真的,我使用了:“stringByReplacingOccurrencesOfString()”,它没有成功是的,但从发布的代码中我推断OP没有使用该函数。实际上我已经使用了“stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())“而且它也不起作用。是的,修剪只在最后起作用。我上面的代码在操场上测试过。你的空格字符可能不是空格。看:非常感谢!!!它的工作原理我可以问一下,为什么会有否决票?在Swift 2中尝试一下,有一个错误:不能用类型为“(String,(Character)->Bool)”的参数列表调用“filter”啊,谢谢你指出,我还没有真正使用过2.0,我会把它添加到答案中。Swift 2.0即将推出,Xcode GM可用。我已经看到我的Swift 1.x答案被否决,因为它们不适用于2.0。找到我所有的快速答案并添加2.0答案将是一件非常痛苦的事情。
extension String {
    func removeCharacters(chars: [Character]) -> String {
        return String(filter(self) {find(chars, $0) == nil})
    }
}

let chars: [Character] = ["(", ")", "-", " "]

let result = content.removeCharacters(chars)