In Swift 3.0 如何让输入的字符串中的一个字符向后移动?

In Swift 3.0 How to make one character in a string move backward when you typing?

我是 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

    }

在 Swift 中索引 Strings 并不像许多人希望的那样 "straightforward",这仅仅是由于字符串在内部的表示方式。如果你只想在用户输入的倒数第二个位置之前添加一个 . 你可以这样做:

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(这可能是也可能不是您想要的)。