用于简洁显示数字、货币和时间间隔的格式化工具
为何选择 SwiftCompactor?首先,适用于精度要求不高,但空间宝贵的场景。其次,像 $8.6M
这样紧凑的值比像 $8,603,842.35
这样的值更容易理解,降低用户的认知负荷。
作为一个开源 Swift 库提供,可被集成到其他应用中。
Compactor 是 OpenAlloc 开源 Swift 软件工具家族的一部分。
let c = NumberCompactor()
print(c.string(from: 1_234_567))
=> "1.2M"
默认情况下,数值将显示最多一位小数,必要时四舍五入。
ifZero
(默认值: (String?)nil
) - 如果为 nil 且值为零,则显示零值。如果非 nil 且值为零,则显示指定的字符串值roundSmallToWhole
(默认值: false
) - 如果为 true,则从 -100...100
范围内的值中排除小数部分后缀 | 描述 | 值 |
---|---|---|
k | 千 (thousand) | 1000^1 |
M | 百万 (million) | 1000^2 |
G | 十亿 (billion) | 1000^3 |
T | 万亿 (trillion) | 1000^4 |
P | 千万亿 (quadrillion) | 1000^5 |
E | 百京 (quintillion) | 1000^6 |
有关更多详细信息,请参阅维基百科上的 二进制前缀 页面。
let c = CurrencyCompactor()
print(c.string(from: 1_234_567))
=> "$1.2M"
默认情况下,-100...100
范围内的值将没有小数部分,并在必要时四舍五入。超出此范围的值将显示一位小数,必要时四舍五入。
ifZero
(默认值: (String?)nil
) - 如果为 nil 且值为零,则显示零值。如果非 nil 且值为零,则显示指定的字符串值roundSmallToWhole
(默认值: true
) - 如果为 true,则从 -100...100
范围内的值中排除小数部分请注意,roundSmallToWhole
默认为 true,因为当我们习惯于以美分为单位的分数时,$1.1
看起来会很奇怪。
与 NumberCompactor()
使用的相同。
使用 TimeCompactor()
,您需要提供一个 TimeInterval
值,将其转换为字符串值。
let c = TimeCompactor()
print(c.string(from: 1_234_567))
=> "14.3d"
let f = TimeCompactor(style: .full)
print(f.string(from: 1_234_567))
=> "14.3 days"
默认情况下,数值将显示最多一位小数,必要时四舍五入。
ifZero
(默认值: (String?)nil
) - 如果为 nil 且值为零,则显示零值。如果非 nil 且值为零,则显示指定的字符串值style
(默认值: .short
) - 使用的后缀样式roundSmallToWhole
(默认值: false
) - 如果为 true,则从 -100...100
范围内的值中排除小数部分后缀将取决于样式,目前有 .short
(默认)、.medium
和 .full
三种样式。
short(短) | medium(中) | full(完整) | 值 |
---|---|---|---|
s | 秒 | 秒 | 1 |
m | 分 | 分钟 | 60 |
h | 小时 | 小时 | 3,600 |
d | 天 | 天 | 86,400 |
y | 年 | 年 | d × 365.25 |
c | 世纪 | 世纪 | y × 100 |
ky | ky | 千年 | y × 1000 |
请注意,.medium
和 .full
样式包含复数形式。
此库是 OpenAlloc Project 的成员。
版权所有 2021, 2022 OpenAlloc LLC
根据 Apache License, Version 2.0(“许可证”)获得许可;除非遵守许可证,否则您不得使用此文件。您可以在以下网址获取许可证副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据许可证分发的软件按“原样”基础分发,不附带任何形式的明示或暗示的保证或条件。请参阅许可证,了解有关特定语言的权限和限制。
欢迎贡献。鼓励您提交拉取请求以修复错误、改进文档或提供新功能。
拉取请求不必是生产就绪的功能或修复。它可以是拟议更改的草案,或者只是一个测试,以表明预期的行为存在错误。可以从那里开始讨论拉取请求。
贡献最终应具有足够的测试覆盖率。请参阅当前实体的测试,以了解预期的覆盖率。