当前位置: 首页 > 面试题库 >

在Swift中将千位分隔符添加到Int

端木弘方
2023-03-14
问题内容

我对Swift还是相当陌生,在寻找一种将空间添加为千位分隔符的方法时遇到了很多麻烦。

我希望实现的是获取计算结果并将其显示在文本字段中,以便格式为:

2358 000

代替

2358000

例如。

我不确定是否应该格式化Int值,然后将其转换为String,或者在将Int值转换为String之后添加空格。任何帮助将不胜感激。


问题答案:

您可以使用NSNumberFormatter指定其他分组分隔符,如下所示:

更新: Xcode 11.5•Swift 5.2

extension Formatter {
    static let withSeparator: NumberFormatter = {
        let formatter = NumberFormatter()
        formatter.numberStyle = .decimal
        formatter.groupingSeparator = " "
        return formatter
    }()
}
extension Numeric {
    var formattedWithSeparator: String { Formatter.withSeparator.string(for: self) ?? "" }
}
2358000.formattedWithSeparator  // "2 358 000"
2358000.99.formattedWithSeparator  // "2 358 000.99"

let int = 2358000
let intFormatted = int.formattedWithSeparator  // "2 358 000"

let decimal: Decimal = 2358000
let decimalFormatted = decimal.formattedWithSeparator  // "2 358 000"

let decimalWithFractionalDigits: Decimal = 2358000.99
let decimalWithFractionalDigitsFormatted = decimalWithFractionalDigits.formattedWithSeparator // "2 358 000.99"

如果您需要使用当前语言环境或固定语言环境将值显示为货币:

extension Formatter {
    static let number = NumberFormatter()
}
extension Locale {
    static let englishUS: Locale = .init(identifier: "en_US")
    static let frenchFR: Locale = .init(identifier: "fr_FR")
    static let portugueseBR: Locale = .init(identifier: "pt_BR")
    // ... and so on
}
extension Numeric {
    func formatted(with groupingSeparator: String? = nil, style: NumberFormatter.Style, locale: Locale = .current) -> String {
        Formatter.number.locale = locale
        Formatter.number.numberStyle = style
        if let groupingSeparator = groupingSeparator {
            Formatter.number.groupingSeparator = groupingSeparator
        }
        return Formatter.number.string(for: self) ?? ""
    }
    // Localized
    var currency:   String { formatted(style: .currency) }
    // Fixed locales
    var currencyUS: String { formatted(style: .currency, locale: .englishUS) }
    var currencyFR: String { formatted(style: .currency, locale: .frenchFR) }
    var currencyBR: String { formatted(style: .currency, locale: .portugueseBR) }
    // ... and so on
    var calculator: String { formatted(groupingSeparator: " ", style: .decimal) }
}

用法:

1234.99.currency    // "$1,234.99"

1234.99.currencyUS  // "$1,234.99"
1234.99.currencyFR  // "1 234,99 €"
1234.99.currencyBR  // "R$ 1.234,99"

1234.99.calculator  // "1 234.99"

注意:如果您希望空格的宽度等于句点的宽度,则可以使用 "\u{2008}"

Unicode空间

formatter.groupingSeparator = "\u{2008}"


 类似资料:
  • 问题内容: 我有一个 JComboBox ,想在元素列表中有一个分隔符。如何在Java中做到这一点? 一个方便使用的示例场景是制作用于字体族选择的组合框。与Word和Excel中的font-family-selection- control类似。在这种情况下,我想在顶部显示最常用的字体,然后显示一个分隔符,最后按字母顺序显示分隔符下方的所有字体系列。 谁能帮我解决这个问题,或者在Java中是不可能

  • 问题内容: Javascript中是否有用于格式化数字和字符串的函数? 我正在寻找一种用于字符串或数字的千位分隔符的方法…(如C#中的String.Format) 问题答案: 以下原始答案中引用的参考文献有误。这里是一个内置的功能,这一点,而这正是德皇以下建议: 因此,您可以执行以下操作: 下面实现的功能也可以使用,但是根本没有必要。 原始答案 根据此参考资料,没有内置函数可将逗号添加到数字中。但

  • 我尝试在我的GridLayout RecyclerView中添加水平分隔线。但出于某种原因,分割线没有出现。 作为替代方法,我使用具有 2 个参数的 addItemDecoration 方法,其中第二个参数是索引,之后添加 ItemDecoration。 它强制关闭,但有以下例外: 这个尺寸意味着什么?为什么是零? 可能是因为我在活动而不是片段中使用此回收器视图吗? P、 美国:适配器没有问题;它

  • 本文向大家介绍Javascript 正则表达式实现为数字添加千位分隔符,包括了Javascript 正则表达式实现为数字添加千位分隔符的使用技巧和注意事项,需要的朋友参考一下 最近在网上有看到使用js来实现数字的千位分隔符的面试(笔试)题,所以就自己写了一个利用“正则+replace”来实现的方法:   支持正负号匹配,小数点区分,如有错误,希望大大们指出:-D 附上一个其他网友的实现方法 以上就

  • 我正在为Prestashop编写一个模块,该模块覆盖AdminProductsController,并向BackOffice产品视图中的批量操作菜单中添加另外两个操作。这是我在重写类的构造中添加批量操作的代码 结果是这样的 我想在“删除选定项”和“导出选定项”之间添加分隔符。我的意思是,在我新添加的条目之前添加它。我怎样才能做到这一点?

  • 问题内容: 我正在尝试在JavaScript中使用逗号将整数打印为数千个分隔符。例如,我想将数字1234567显示为“ 1,234,567”。我将如何去做呢? 这是我的做法: 有没有更简单或更优雅的方法?如果它也可以与浮点数一起使用,那就太好了,但这不是必需的。在句点和逗号之间进行决策不需要特定于区域设置。 问题答案: 我使用了Kerry的回答中的想法,但是由于我只是为了自己的特定目的寻找简单的东