Please help me, I use Xcode 8.3(swift 3.1), the function trimmingCharacters
not work. My code as below:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if var searchStr = textField.text{
let _searchStr = searchStr.trimmingCharacters(in: .whitespaces)
print("After trimming:\(_searchStr)")
}
}
The input in textfield is 409 huỳnh
and the print result is 409 huỳnh
not as expected: 409huỳnh .
From the documentation:
A new string made by removing from both ends of the receiver characters contained in set.
It does not remove characters within the string.
You can replace whitespaces – corresponding to the .whitespaces
character set – in the string with regular expression:
let _searchStr = searchStr.replacingOccurrences(of: "\\s", with: "", options: .regularExpression)
trimmingCharacters
removes only leading and trailing white spaces.
try this
let _searchStr = searchStr.replacingOccurrences(" ", withString: "", options:.literal, range: nil)
You can use
let trimmedString = searchStr.stringByReplacingOccurrencesOfString(" ", withString: "")
Hope this helps you !
In Swift 3 you can use below code to solve the problem
let _searchStr = searchStr.replacingOccurrences(of: " ", with: "")
Swift 4 alternative
Since Swift 4 Strings are Sequences again. You can use a filter to do that.
let _searchStr = searchStr.filter({ " ".contains($0) == false })
You can use Swift 5 Character property isWhitespace
and filter all non whitespaces from your string:
let string = "409 huỳnh"
let result = string.filter { !$0.isWhitespace }
print(result) // "409huỳnh"