swift - Swift 中插值字符串中的数字是否受语言环境影响?

标签 swift locale string-interpolation

Swift 中的内插字符串是否受语言环境影响?

例如,如果我有:

let beanCount : Int = 10
let s : String = "I have \(beanCount) beans"

即使在可能使用非拉丁字母的地方,这在每个语言环境中都会给出以下内容吗?

I have 10 beans

对于可以有小数分隔符的浮点也是如此吗?

如果它确实发生了变化,但我希望它被修复,我如何确保标准格式?

编辑:

对我的问题进行更多澄清:

在这种情况下(虽然我没有说清楚),我特别关注基本类型,例如整数类型(IntUInt32Int8 等),尽管 float 也很有趣。

我的用例并不是真正生成要呈现给用户的字符串,而是生成供应用程序内部使用的字符串,例如作为文件名、加密 key 、密码或字典 key 。

在这种情况下,我不希望生成的值受到语言环境的影响,而且我实际上只对基本类型感兴趣。

最佳答案

插值使用 CustomStringConvertible协议(protocol),因此我们可以说这一切都取决于给定类型的实现。

为了确保标准格式,请勿依赖 description这始终主要用于调试目的。

如果您想向用户显示字符串,则对于数字,请使用 NSNumberFormatter使用系统或预设区域设置。如果您正在处理日期,请使用 NSDateFormatter .

您可能认为整数不会出现格式问题,但如果您有 3000000 该怎么办? bean ?您当前的实现将打印 3000000但你真正想要的3 000 0003.000.0003'000'000 (取决于区域设置)。始终使用数字格式化程序,并且几乎总是应该使用系统区域设置。

关于swift - Swift 中插值字符串中的数字是否受语言环境影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35813300/

相关文章:

SwiftUI:如何自定义仅适用于 iPad 的工作表?

ios - 重载 Swift round 函数导致 "Could not find an overload for ' init' 接受提供的参数“错误

运行时快速字符串插值

c# - 考虑到语言环境,是否可以在 LINQ 查询中回退空值?

ruby-on-rails - 在 Ruby 中插入用户输入字符串

string - 如何在 Elixir 中评估或执行字符串插值?

swift - 制作一个空白(非零)tviRoom 对象用于委托(delegate)功能测试

swift - 使用未解析的标识符 'RealmOptional'

ruby - Ruby 中是否有独立的 i18n 库?

java - 安卓本地化