2016-04-28 53 views
1

我是新來的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

回答

5

嘗試另一種方法

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

要不試試這個

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

這很好,第一個選項工作。我的不好,我忘了試試。謝謝。 –

1

這是你可以用它來啓動清潔代碼:

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 
} 
1

對於斯威夫特3你可以使用:

//let myTextField.text = " Hello World" 

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