trimmingCharacters 不适用于 iOS 10.3 Xcode8.3

trimmingCharacters not work on iOS 10.3 Xcode8.3

请帮帮我,我用的是Xcode8.3(swift3.1),函数trimmingCharacters不行。我的代码如下:

    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)")
   }
}

文本框输入409 huỳnh,打印结果409 huỳnh 与预期不符:409huỳnh .

来自文档:

A new string made by removing from both ends of the receiver characters contained in set.

不会删除字符串中的字符。

可以用正则表达式替换字符串中对应.whitespaces字符集的空格:

let _searchStr = searchStr.replacingOccurrences(of: "\s", with: "", options: .regularExpression)

您可以使用

let trimmedString = searchStr.stringByReplacingOccurrencesOfString(" ", withString: "")

希望对您有所帮助!

trimmingCharacters 仅删除前导和尾随空格。

试试这个

let _searchStr = searchStr.replacingOccurrences(" ", withString: "", options:.literal, range: nil)

Swift3你可以使用下面的代码来解决问题

let _searchStr = searchStr.replacingOccurrences(of: " ", with: "")

Swift 4 备选方案

因为 Swift 4 个字符串再次成为序列。您可以使用过滤器来做到这一点。

let _searchStr = searchStr.filter({ " ".contains([=10=]) == false })

您可以使用 Swift 5 个字符 属性 isWhitespace 并从您的字符串中过滤所有非空格:

let string = "409 huỳnh"
let result = string.filter { ![=10=].isWhitespace }
print(result)  // "409huỳnh"