在Swift 3.0中如何使字符串中的一个字符在你输入时向后移动?
问题描述:
我是Swift中的新成员。 我想做一个预算申请。这个应用程序有一个计算器像键盘。我的想法是,当用户输入钱的应用程序会自动为用户添加一个小数位。在Swift 3.0中如何使字符串中的一个字符在你输入时向后移动?
例如,如果你输入1230,它会给你和12.30键入123会显示1.23
我写的几行代码楼下。问题是它只能在第一位数字后加小数点,当你输入更多数字时它不会倒退。它只能显示为X.XXXXX
我试着用String.index(也许增加索引?)和NSNumber/NSString格式来解决这个问题。但我不知道这是正确的方向与否。
let number = sender.currentTitle!
let i: String = displayPayment.text!
if (displayPayment.text?.contains("."))!{
displayPayment.text = i == "0" ? number : displayPayment.text! + number
}
else {
displayPayment.text = i == "0" ? number : displayPayment.text! + "." + number
}
答
索引斯威夫特并不像“爽快”尽可能多想,只是由于字符串是如何在内部表示。如果你只是想前一秒在添加.
到用户输入的最后一个位置,你可以做这样的:
let amount = "1230"
var result = amount
if amount.characters.count >= 2 {
let index = amount.index(amount.endIndex, offsetBy: -2)
result = amount[amount.startIndex..<index] + "." + amount[index..<amount.endIndex]
} else {
result = "0.0\(amount)"
}
所以对于1230
result
的投入将12.30
。现在您可能需要根据您的特定需求来调整它。例如,如果用户输入30
此代码将导致.30
(这可能会或可能不是你想要的)。
最简单的解决方案是让用户输入小数,因为它可能会令人讨厌输入12300,而不是123.00美元。所以他们可以输入123,它会假设小数点在123.00。 –
http://stackoverflow.com/a/29783546/2303865可能的重复 –