用 TextField 中的小数分隔符替换逗号
Posted
技术标签:
【中文标题】用 TextField 中的小数分隔符替换逗号【英文标题】:Replace comma with decimal separator from TextField 【发布时间】:2017-10-14 06:49:07 【问题描述】:谁能告诉我如何在我的文本字段中用.
替换,
分隔符?用户可以输入5,6
之类的内容,但是当他按下按钮时,我想将他输入为5,6
的数据提交给5.6
,否则不会进行十进制计算。
我有这个扩展字符串文件,但似乎仅用于限制文本中的一个逗号和逗号后的两个小数,而不是将,
转换为.
extension String
private static let decimalFormatter:NumberFormatter =
let formatter = NumberFormatter()
formatter.allowsFloats = true
return formatter
()
private var decimalSeparator:String
return String.decimalFormatter.decimalSeparator ?? "."
func isValidDecimal(maximumFractionDigits:Int)->Bool
guard self.isEmpty == false else
return true
// Check if valid decimal
if let _ = String.decimalFormatter.number(from: self)
// Get fraction digits part using separator
let numberComponents = self.components(separatedBy: decimalSeparator)
let fractionDigits = numberComponents.count == 2 ? numberComponents.last ?? "" : ""
return fractionDigits.characters.count <= maximumFractionDigits
return false
var doubleValue: Double
let nf = NumberFormatter()
nf.decimalSeparator = "."
if let result = nf.number(from: self)
return result.doubleValue
else
nf.decimalSeparator = ","
if let result = nf.number(from: self)
return result.doubleValue
return 0
【问题讨论】:
【参考方案1】:当你点击按钮时,写下面的代码来替换你的字符串
let strReplace = txtField.text.replacingOccurrences(of: ",", with: ".", options: .literal, range: nil)// change "txtField" your textfield's object
print(\(strReplace))
【讨论】:
【参考方案2】:你应该为 uitextfield 添加 Delegate 方法
class ViewController: UIViewController, UITextFieldDelegate
然后在viewdidload中添加self
override func viewDidLoad()
super.viewDidLoad()
textField.delegate = self;
// Do any additional setup after loading the view, typically from a nib.
然后在可以更改字符的函数中添加以下函数
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String)
print("While entering the characters this method gets called")
let strReplace = txtField.text.replacingOccurrences(of: ",", with: ".", options: .literal, range: nil)
// change "txtField" your textfield's object
print(\(strReplace))
现在您可以获得替换字符串以及当前的文本字段文本。!
【讨论】:
以上是关于用 TextField 中的小数分隔符替换逗号的主要内容,如果未能解决你的问题,请参考以下文章