问题
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 .
回答1:
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)
回答2:
trimmingCharacters
removes only leading and trailing white spaces.
try this
let _searchStr = searchStr.replacingOccurrences(" ", withString: "", options:.literal, range: nil)
回答3:
You can use
let trimmedString = searchStr.stringByReplacingOccurrencesOfString(" ", withString: "")
Hope this helps you !
回答4:
In Swift 3 you can use below code to solve the problem
let _searchStr = searchStr.replacingOccurrences(of: " ", with: "")
回答5:
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 })
回答6:
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"
来源:https://stackoverflow.com/questions/43177943/trimmingcharacters-not-work-on-ios-10-3-xcode8-3