swift - 从var(UITextField输入)中删除空格不起作用

问题描述:

我是新来的swift,但是从ObjectiveC背景中,我尝试从按钮单击按钮时从textfield获取输入到var中。swift - 从var(UITextField输入)中删除空格不起作用

现在,当我试图使用“stringByTrimmingCharactersInSet”等很多其他选项删除空白空间时,它不起作用。这里是我的代码,

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

    } 

我也通过分配结果到一个新的变种试图,

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

,但仍然无法删除空格。我的猜测是我对“Unwrapped value”概念感到困惑,如果有人能够帮助我,它会非常有帮助。谢谢!

+1

如果你看一下文档,''someVariable.stringByTrimmingCharactersInSet返回由包含在一个给定字符的字符串中的字符两端取出了一个新的字符串设置,所以它是按预期工作 - 请参阅@安布的回答 – sschale

尝试另一种方法

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

要不试试这个

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

这很好,第一个选项工作。我的不好,我忘了试试。谢谢。 –

这是你可以用它来启动清洁代码:

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 
} 

对于斯威夫特3你可以使用:

//let myTextField.text = " Hello World" 

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