为 UITextField 每 3 个字符添加一个字符
Add a character for every 3 characters for UITextField
我正在尝试在用户输入每三个字符时添加一个字符,例如用户类型:123456789
它应该自动更改为 123,456,789
。如何在
中添加字符
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
这是一种方法:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
var proposedString = (textField.text as NSString?)!.replacingCharacters(in: range, with: string)
// do whatever modifications you need to do, e.g. remove commas:
proposedString = proposedString.replacingOccurrences(of: ",", with: "")
let modulo = proposedString.count % 3
for index in stride(from: modulo, to: proposedString.count, by: 3).reversed() {
print(index)
if index != 0 {
proposedString.insert(",", at: proposedString.index(proposedString.startIndex, offsetBy: index))
}
}
// manually set the new value
textField.text = proposedString
// don't let it update itself
return false
}
注意: 我的这个小算法只适用于逗号——因此你应该使用 Locale
(docs), or NumberFormatter
(docs) 添加逗号,如果逗号是您在您所在国家/地区显示号码的方式的一部分。
您应该考虑到世界上不同的地区使用不同的方式来格式化数字。为了解决这个问题,让 iOS 为您进行格式化。
事实证明这非常简单。您需要的一行代码是:
NumberFormatter.localizedString(from: 123456 as NSNumber, number: NumberFormatter.Style.decimal)
我正在尝试在用户输入每三个字符时添加一个字符,例如用户类型:123456789
它应该自动更改为 123,456,789
。如何在
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
这是一种方法:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
var proposedString = (textField.text as NSString?)!.replacingCharacters(in: range, with: string)
// do whatever modifications you need to do, e.g. remove commas:
proposedString = proposedString.replacingOccurrences(of: ",", with: "")
let modulo = proposedString.count % 3
for index in stride(from: modulo, to: proposedString.count, by: 3).reversed() {
print(index)
if index != 0 {
proposedString.insert(",", at: proposedString.index(proposedString.startIndex, offsetBy: index))
}
}
// manually set the new value
textField.text = proposedString
// don't let it update itself
return false
}
注意: 我的这个小算法只适用于逗号——因此你应该使用 Locale
(docs), or NumberFormatter
(docs) 添加逗号,如果逗号是您在您所在国家/地区显示号码的方式的一部分。
您应该考虑到世界上不同的地区使用不同的方式来格式化数字。为了解决这个问题,让 iOS 为您进行格式化。
事实证明这非常简单。您需要的一行代码是:
NumberFormatter.localizedString(from: 123456 as NSNumber, number: NumberFormatter.Style.decimal)