swift - 在 Swift 3.0 中,如何在输入时使字符串中的一个字符向后移动?

标签 swift string indexing nsstring nsnumber

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

相关文章:

swift - 在 Cloudkit 谓词上使用 OR 运算符

javascript - 如何使用 REGEX 替换 JavaScript 中字符串中的标记

c++ - 按行、列或随机从数组填充矩阵时出现错误索引问题

mongodb - 针对计数器字段构建索引

swift - 想了解关系

ios - Swift 自定义 UITableView 未在构建中显示

ios - UIButtons 上方的 UIScrollView

string - 将 Tex 字符串转换为 Tex 编号

android - 如何将 utf-16 字符放入 Android 字符串资源中?

indexing - Rust 无法索引到 'datatype<{integer}, {integer}>` 类型的值