4

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

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

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

    }

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

        let trimmed: String = someVariable.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
        print(trimmed)

但仍然无法删除空格。我的猜测是我对“未包装的价值”概念感到困惑,如果有人可以帮助我,那将非常有帮助。谢谢!

4

4 回答 4

5

尝试另一种方式

 urlInputComponent.text! = urlInputComponent.text!.stringByReplacingOccurrencesOfString(" ", withString: "")

或者试试这个

let trimmed = "".join(urlInputComponent.text!.characters.map({ $0 == " " ? "" : String($0) }))
 print (trimmed)
于 2016-04-28T07:09:24.430 回答
2

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

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
 }
于 2016-04-28T07:14:20.257 回答
2

对于Swift 3,您可以使用:

//let myTextField.text = " Hello World"

myTextField.text.replacingOccurrences(of: " ", with: "")
// Result: "Helloworld"
于 2017-08-02T18:42:29.360 回答
2
let string = textField.text?.trimmingCharacters(in: .whitespaces)
于 2018-05-02T00:23:50.063 回答