【问题标题】:Convert UITextField to comma separated number and back to dot separator将 UITextField 转换为逗号分隔的数字并返回到点分隔符
【发布时间】:2017-11-09 21:30:37
【问题描述】:

你好强大的 StackOverflowers,

我知道这肯定是一个问题超过一百次,但我只是在这个阶段作为一个完全的初学者(Swift 4 / Xcode 9),我完全不知道如何实现所有这些提示和事情我还没有发现。

我想这个很简单,所以这是我的神经痛:

我正在为百分比创建一个小应用程序。一切正常...只要我不触摸设置为德语的 iPhone 数字键盘上的逗号,因为计算仅适用于点分隔符。

在开始时,我希望将 UITextField 转换为点分隔的整数/浮点数,并给出结果,我想将其转换回逗号分隔的数字。 短:用逗号分隔输入,用点分隔计算,“打印”结果显示逗号分隔。

这是当前工作的代码,只要电话设置为英语或(如果是德语)字段中仅添加非十进制数字:

哦...还有一件重要的事情:我未能将迄今为止在这里找到的代码 sn-ps 添加到我的 ViewController.swift... 我只是不知道将这些行放在哪里:( 我们开始:

class ViewController: UIViewController {

    //User Fields:

    @IBOutlet weak var kind: UITextField!      // kind of unit (€, $, metres...)
    @IBOutlet weak var base: UITextField!      //base
    @IBOutlet weak var percent: UITextField!   //percent (1%, 4,5% etc.)

    //Result Labels:

    @IBOutlet weak var percentInKind: UILabel!   //the percent as value in kind
    @IBOutlet weak var total: UILabel!           //base minus percentInKind 

    //Calculation:

    @IBAction func calculateTotal(_ sender: Any) {


        let kindConv = String(kind.text!)          //Converted to String
        let baseConv = Double(base.text!)          //Converted to Double
        let percentConv = Double(percent.text!)    //Converted to Double

        let percentInKindConv = Double(baseConv! * percentConv!) / 100

        percentInKind.text = String(format: "%.2f", percentInKindConv) + " \(kindConv)"
        total.text = String(format: "%.2f", baseConv! - percentInKindConv) + " \(kindConv)"
    }

【问题讨论】:

  • 提示 - 使用 NumberFormatter 转换为/从用户呈现/输入的字符串。
  • 谢谢,@maddy。我在这里找到了很多“NumberFormatter”提及,但从未找到一个可以准确涵盖这种情况的内容。我已经买了那本德文 1,300 页的 Swift 4 书,现在我将了解 NumberFormatter:D
  • 我不断收到错误消息...无法将字符串转换为 NumberFormatter,无法转换 Double.... 转换 Float... 什么也没有。我只是不明白:(
  • 用您的相关代码更新您的问题。
  • 嗯...我猜这是我的问题。有两件事我没有按照我想要的方式得到它。第一件事是应用程序与德国数字键盘崩溃,因为有一个逗号而不是一个点。所以我希望应用程序将逗号“,”转换为“。”以便按钮中的计算有效。在计算之后,我希望它显示在带有“,”的标签中。我真的不知道上面代码的哪一部分是相关部分,因为我不知道这些转换到底是在哪里进行的。

标签: ios swift


【解决方案1】:

下午 0.05 点,闹钟在早上 5.30 点响起,但我不能让这个星期天结束而不弄清楚这个初学者的问题。所以我希望这段代码——对我有用——是正确的和“干净的”。我将粘贴整个内容以显示搜索它的人。我真的很感激关于缩短或“缓和”这个的进一步提示。所以……我们开始吧:

 //User input fields

    @IBOutlet weak var kind: UITextField!                //kind of unit (€, metres etc.)
    @IBOutlet weak var base: UITextField!                //base number
    @IBOutlet weak var percent: UITextField!             //percent in %

    //Result labels

    @IBOutlet weak var sumPercent: UILabel!              //% in kind of unit
    @IBOutlet weak var total: UILabel!                   //base - sumPercent

    //Calculation

    @IBAction func berechnenAbziehen(_ sender: Any) {


        let kindVar = String(kind.text!)

        let formatter = NumberFormatter()
        formatter.numberStyle = .decimal
        formatter.alwaysShowsDecimalSeparator = true
        formatter.locale = Locale(identifier: "de_DE")
        formatter.decimalSeparator = ","
        formatter.maximumFractionDigits = 2
        formatter.minimumFractionDigits = 2

        let baseFormatter = formatter.number(from: base.text!) as! Double
        let percentFormatter = formatter.number(from: percent.text!) as! Double

        let percentSum = baseFormatter * percentFormatter / 100
        let totalSum = baseFormatter - percentSum

        sumPercent.text = formatter.string(for: percentSum)! + " \(kindVar)"
        total.text = formatter.string(for: totalSum)! + " \(kindVar)"

晚安! ;-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-21
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    相关资源
    最近更新 更多