trimmingCharacters not work on iOS 10.3 Xcode8.3

天大地大妈咪最大 提交于 2019-12-13 10:14:42

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!