32 lines
898 B
Swift
32 lines
898 B
Swift
|
//
|
|||
|
// Int.swift
|
|||
|
//
|
|||
|
//
|
|||
|
// Created by Marcus Kida on 28.12.22.
|
|||
|
//
|
|||
|
|
|||
|
import Foundation
|
|||
|
|
|||
|
public extension Int {
|
|||
|
func asAbbreviatedCountString() -> String {
|
|||
|
switch self {
|
|||
|
case ..<1_000:
|
|||
|
return String(format: "%d", locale: Locale.current, self)
|
|||
|
case 1_000 ..< 999_999:
|
|||
|
return String(format: "%.1fK", locale: Locale.current, Double(self) / 1_000)
|
|||
|
.sanitizedAbbreviatedCountString(for: "K")
|
|||
|
default:
|
|||
|
return String(format: "%.1fM", locale: Locale.current, Double(self) / 1_000_000)
|
|||
|
.sanitizedAbbreviatedCountString(for: "M")
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
fileprivate extension String {
|
|||
|
func sanitizedAbbreviatedCountString(for value: String) -> String {
|
|||
|
[".0", ",0", "٫٠"].reduce(self) { res, acc in
|
|||
|
return res.replacingOccurrences(of: "\(acc)\(value)", with: value)
|
|||
|
}
|
|||
|
}
|
|||
|
}
|