替换 Occurrences(of: " ", with: "") 不工作
Posted
技术标签:
【中文标题】替换 Occurrences(of: " ", with: "") 不工作【英文标题】:replacingOccurrences(of: " ", with: "") Not Working 【发布时间】:2018-03-17 07:14:03 【问题描述】:我有一个文本字段,用户可以在其中输入他们的电话号码。当他们点击“继续”按钮时,文本字段中的文本被分配给一个名为 phoneNumber 的全局变量。然后我继续清除任何非整数值的字符串,例如“-”、“)”和“+”。当我尝试删除空格时,它并不总是有效。我意识到只有当我自动填写我的电话号码时它才不起作用。自动填充电话号码中的空格是否与我们键盘上的空格不同?
有人可以帮我弄清楚这里发生了什么,或者是否有更好的方法来做到这一点?
class LoginViewController: UIViewController
@IBOutlet weak var phoneNumberTextField: UITextField!
var phoneNumber = ""
@IBAction func continueButton(_ sender: Any)
self.phoneNumber = phoneNumberTextField.text!
for _ in 0...phoneNumber.count
self.phoneNumber = self.phoneNumber.replacingOccurrences(of: " ", with: "")
self.phoneNumber = self.phoneNumber.replacingOccurrences(of: "-", with: "")
self.phoneNumber = self.phoneNumber.replacingOccurrences(of: "(", with: "")
self.phoneNumber = self.phoneNumber.replacingOccurrences(of: ")", with: "")
checkCount(phoneNumber: self.phoneNumber)
func checkCount(phoneNumber : String)
if phoneNumber.count == 11
self.phoneNumber = "+" + phoneNumber
else if phoneNumber.count == 10
self.phoneNumber = "+1" + phoneNumber
【问题讨论】:
Bug in replacingOccurrences()?的可能重复 我试过了,还是不行。 您的代码不起作用的原因可能是电话号码包含“不间断空格字符”,比较Why Strings are not equal in my case?。 感谢@MartinR,这可能是正在发生的事情。 【参考方案1】:使用CharacterSet
而不是replacingOccurrences
从字符串中过滤电话号码的最佳方法。
你可以试试下面的代码
let components =
phoneNumber.components(separatedBy: CharacterSet.decimalDigits.inverted)
let phone = components.joined()
print(phone)
【讨论】:
效果很好!你真棒。我改变了一件小事,只是为了减少一个变量:我将“let phone”更改为“self.phoneNumber”。这样我就不必更改我的其余代码。谢谢!以上是关于替换 Occurrences(of: " ", with: "") 不工作的主要内容,如果未能解决你的问题,请参考以下文章
leetcode1207. Unique Number of Occurrences
Count the number of occurrences in a sorted array
LeetCode --- 1207. Unique Number of Occurrences 解题报告
Leetcode 1207. Unique Number of Occurrences
HOW TO REPLACE ALL OCCURRENCES OF A CHARACTER IN A STD::STRING
Page directive must not have multiple occurrences of pageencoding