Ios swift-从var(UITextField输入)中删除空格不';行不通

Ios swift-从var(UITextField输入)中删除空格不';行不通,ios,string,swift,var,unwrap,Ios,String,Swift,Var,Unwrap,我是swift新手,但在ObjectiveC背景下,我尝试通过点击按钮将文本字段中的输入输入到变量中 现在,当我尝试使用“stringByTrimmingCharactersInSet”和其他许多选项删除空白时,它不起作用。这是我的密码 var someVariable = urlInputComponent.text! if someVariable.containsString(" "){ someVariable = someVariable.stringB

我是swift新手,但在ObjectiveC背景下,我尝试通过点击按钮将文本字段中的输入输入到变量中

现在,当我尝试使用“stringByTrimmingCharactersInSet”和其他许多选项删除空白时,它不起作用。这是我的密码

    var someVariable = urlInputComponent.text!
    if someVariable.containsString(" "){
        someVariable = someVariable.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
        print(someVariable)

    }
我还尝试将结果分配给一个新的变量

        let trimmed: String = someVariable.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
        print(trimmed)
但仍然无法删除空白。我的猜测是我混淆了“未包装价值”的概念,如果有人能帮助我,这将非常有帮助。谢谢

试试另一种方法

 urlInputComponent.text! = urlInputComponent.text!.stringByReplacingOccurrencesOfString(" ", withString: "")
或者试试这个

let trimmed = "".join(urlInputComponent.text!.characters.map({ $0 == " " ? "" : String($0) }))
 print (trimmed)

这是您可以用来开始清洁的代码:

extension String {
    func condenseWhitespace() -> String {
        let components = self.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).filter({!Swift.isEmpty($0)})
        return " ".join(components)
    }
}

var string = "  Lorem   \r  ipsum dolar   sit  amet. "
println(string.condenseWhitespace())
还将此委托方法添加到代码中:

 func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool {
       if range.location == 0 && string == " " {
           return false
       }
       return true
 }

对于Swift 3,您可以使用:

//let myTextField.text = " Hello World"

myTextField.text.replacingOccurrences(of: " ", with: "")
// Result: "Helloworld"

如果您查看文档,
someVariable.stringByTrimmingCharactersInSet
返回一个新字符串,该字符串是通过从给定字符集中包含的字符串的两端删除而生成的,因此它按预期工作-请参阅@Anbu的回答。很好,第一个选项起作用。糟糕的是,我忘了试一试。非常感谢。
let string = textField.text?.trimmingCharacters(in: .whitespaces)