如何使用 Swift 在文本字段(从右到左)输入货币格式?

2023-11-23

我有一个号码可以说0.00.

  • 当用户点击 1 时,我们应该有0.01
  • 当用户点击 2. 我们应该显示0.12
  • 当用户点击 3. 我们应该显示1.23
  • 当用户点击 4. 我们应该显示12.34

我怎样才能用斯威夫特做到这一点?


For Swift 3。在文本字段中输入货币格式(从右到左)

override func viewDidLoad() {
    super.viewDidLoad()

    textField.addTarget(self, action: #selector(myTextFieldDidChange), for: .editingChanged)
}

@objc func myTextFieldDidChange(_ textField: UITextField) {

    if let amountString = textField.text?.currencyInputFormatting() {
        textField.text = amountString
    }
}

extension String {

    // formatting text for currency textField
    func currencyInputFormatting() -> String {
    
        var number: NSNumber!
        let formatter = NumberFormatter()
        formatter.numberStyle = .currencyAccounting
        formatter.currencySymbol = "$"
        formatter.maximumFractionDigits = 2
        formatter.minimumFractionDigits = 2
    
        var amountWithPrefix = self
    
        // remove from String: "$", ".", ","
        let regex = try! NSRegularExpression(pattern: "[^0-9]", options: .caseInsensitive)
        amountWithPrefix = regex.stringByReplacingMatches(in: amountWithPrefix, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, self.count), withTemplate: "")
    
        let double = (amountWithPrefix as NSString).doubleValue
        number = NSNumber(value: (double / 100))
    
        // if first number is 0 or all numbers were deleted
        guard number != 0 as NSNumber else {
            return ""
        }
    
        return formatter.string(from: number)!
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Swift 在文本字段(从右到左)输入货币格式? 的相关文章

随机推荐

  • jquery select 具有多个属性的元素

    好吧 我现在对 jquery 的选择器过程感到很困惑 是的 开始时很混乱 我的页面上有 2 个输入元素 我想删除其中一个 这是我的输入
  • 设备上运行的应用程序中的所有活动的列表

    如何获取设备上运行的应用程序中的所有活动的列表 例如 包括 pdf 生成和电子邮件活动 我可以使用以下代码检查活动 ActivityManager am ActivityManager this getSystemService ACTIV
  • gdb 不适用于 macos High Sierra 10.13.3

    我已经用brew安装了gdb 8 1 我也有 codesign gdb 和 gdbinit 如下所示 set startup with shell off 我已禁用 SIP 功能 csrutil status System Integrit
  • 单一职责原则与贫乏/丰富领域模型有何关系?

    目前正在对从另一个团队接管的东西进行一些代码审查 并对应用 SRP 及其与贫血或丰富域模型 由 Martin Fowler 定义 的关系存有疑问 富域模型的概念是拥有智能对象 不仅可以设置 获取其属性 还可以执行一些更复杂的业务逻辑 我想知
  • 重组文本列表出现“意外缩进”

    我没有成功使用 Restructedtext 获得简单的 3 级缩进列表 cat test rst Title aaaa aaaa2 aaaa2 aaaa3 aaaa aaaa Ok rst2html test rst gt tmp a h
  • 具有大量查询的node-postgres

    我刚刚开始使用node js 和postgres 使用node postgres 我尝试做的事情之一是编写一个简短的 js 来填充我的数据库 使用一个包含大约 200 000 个条目的文件 我注意到一段时间后 不到 10 秒 我开始收到 错
  • 无法识别的表达式“$first”

    我需要从数组中提取第一项并将其添加到它自己的对象中 所以我发现 first 正是这样做的https docs mongodb com manual reference operator aggregation first array ele
  • 指向数组的指针数组

    我是 C 编程新手 这是我的问题 我想将每个数组的第一个值存储在一个新数组中 然后将每个数组的第二个值存储在一个新数组中 依此类推 我可以声明指针数组 但我不知道如何使用它 拜托 我需要帮助 int main int t1 4 0 1 2
  • Pandas 0.19.2 read_excel IndexError:列表索引超出范围

    我正在寻找解析 Excel 电子表格 我决定使用 pandas 但立即就遇到了错误 我从下面的代码开始 但使用完整路径并尝试设置工作表名称 import pandas as pd table pd read excel ss 12 xlsx
  • 随机数生成器测试

    您将如何测试随机数生成器是否生成实际的随机数 我的方法 首先构建一个大小为 M 的哈希 其中 M 是素数 然后拿号码 由随机数生成器生成 并与M取模 并查看它填充了所有散列或仅填充了某些部分 这就是我的方法 我们可以通过可视化来证明这一点吗
  • 确定全局/根坐标中的 SVG 视口

    SVG 元素内实际可见的内容取决于其宽高比 viewBox值及其preserveAspectRatio value 例如 相同的 SVG 元素大小具有相同的viewBox值 下面的红色虚线 可以有不同的视口 下面以蓝色显示 具体取决于pre
  • TLS ECDHE-ECDSA-AES128-GCM-SHA256 的密钥生成要求

    我想知道 ECDHE ECDSA AES128 GCM SHA256 和 ECDHE ECDSA AES128 GCM SHA256 是否有最低密钥生成要求 我试图让 TLS 客户端和服务器使用上述算法之一相互连接 并不断收到 无共享密码错
  • C++ 应用程序可以使用 JNI 加载 .jar 文件吗?

    感谢您查看问题 我正在尝试使用 JNI 接口调用类文件中的 java 方法 反过来 被调用的类文件应该执行驻留在同一目录中的另一个 jar 文件 我很难做到这一点 并且执行 jar 文件失败 我的意思是我无法从 jar 文件中提供的类 fu
  • 如何解决此错误“Kotlin:[内部错误] java.lang.ExceptionInInitializerError”

    fun main fun convert x Double converter Double gt Double Double val result converter x println x is converted to result
  • LocationClient 在 `onDisconnect` 处自动重新连接

    当连接丢失时 当用户清除 RAM 时 我尝试重新连接到 LocationClient 我尝试使用这段代码 private final GooglePlayServicesClient ConnectionCallbacks mConnect
  • 在 Three.js 中添加视频作为纹理

    我正在研究 Three js 的这个示例 http trijs org examples canvas geometry panorama fisheye 在此示例中 我没有使用 6 张图像 而是使用 5 张图像和一个视频作为纹理 视频格式
  • 是否可以允许用户使用键盘输入数组大小?

    是否可以让用户用键盘输入数组的大小 我知道数组不能改变大小 我能想到的唯一解决方案是 int userSize cin gt gt userSize const int SIZE userSize int array SIZE 我如何验证这
  • 如何访问 tastypie 自定义身份验证中的 POST 数据

    我正在尝试在 tastypie 中编写自定义身份验证 基本上 我想使用 post 参数进行身份验证 而我根本不想使用 django 身份验证 所以我的代码如下所示 class MyAuthentication Authentication
  • addObject后NSMutableArray为空

    我想将一个对象添加到 NSMutableArray 中 NSLog Object text object text NSLog Object object appdelegate objects addObject object NSLog
  • 如何使用 Swift 在文本字段(从右到左)输入货币格式?

    我有一个号码可以说0 00 当用户点击 1 时 我们应该有0 01 当用户点击 2 我们应该显示0 12 当用户点击 3 我们应该显示1 23 当用户点击 4 我们应该显示12 34 我怎样才能用斯威夫特做到这一点 For Swift 3