trimmingCharacters not work on iOS 10.3 Xcode8.3

2019-09-22 13:03发布

问题:

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"