我是 Swift 新手。 我正在尝试提出预算申请。这个应用程序有一个类似键盘的计算器。我的想法是当用户进入金钱应用时会自动为用户添加一位小数。
例如,如果您输入 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
}
最佳答案
索引 Strings Swift 并不像许多人希望的那样“直接”,这仅仅是由于字符串内部的表示方式。如果您只想在用户输入的倒数第二个位置之前添加 .
,您可以这样做:
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
的输入,结果
将是12.30
。现在您可能需要根据您的具体需求进行调整。例如,如果用户输入 30
,此代码将生成 .30
(这可能是您想要的,也可能不是您想要的)。
关于swift - 在 Swift 3.0 中,如何在输入时使字符串中的一个字符向后移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41809954/