如何在 swift UI 中的计算器应用程序中创建字符串(格式:“%.f”)中的数字间距
How to create a spacing between digits in String(format: "%.f") like in calculator App in swift UI
我怎样才能组织我的字符串,使它看起来几乎像一个原始的计算器。基本上目前我正在使用一个字符串 int 他遵循格式 (String(format: "%.f")
下面是我的代码
mutating func appendNumber(_ number: Double) {
if number.truncatingRemainder(dividingBy: 1) == 0 && currentNumber.truncatingRemainder(dividingBy: 1) == 0 {
currentNumber = 10 * currentNumber + number
} else {
currentNumber = number
}
}
}
struct Home: View {
let characterLimit = 9
//MARK: - Computed propety
var displayedString: String {
return String(String(format: "%.01f",
arguments: [state.currentNumber]).prefix(characterLimit))
}
我希望它每 3 个字符有一个间距,与 IOS 的本机计算器应用程序相同。
你应该使用 NumberFormatter
。示例:
var displayedString: String {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
return String((formatter.string(for: state.currentNumber) ?? "").prefix(characterLimit))
}
请注意,输出取决于语言环境。在一种语言环境中,它可以输出 123,456,789
。在另一个语言环境中,它可能是 123 456 789
,而在第三个语言环境中,它可能是 123.456.789
。我很确定有些语言环境使用不同的组大小。计算器应用程序也有此行为。例如,对于我 phone 上的计算器应用程序,它使用逗号而不是空格作为分隔符。
如果无论 phone 的语言环境设置在哪里,都希望每 3 位使用空格进行分组,您可以手动设置:
formatter.groupingSeparator = " "
formatter.groupingSize = 3
我怎样才能组织我的字符串,使它看起来几乎像一个原始的计算器。基本上目前我正在使用一个字符串 int 他遵循格式 (String(format: "%.f")
下面是我的代码
mutating func appendNumber(_ number: Double) {
if number.truncatingRemainder(dividingBy: 1) == 0 && currentNumber.truncatingRemainder(dividingBy: 1) == 0 {
currentNumber = 10 * currentNumber + number
} else {
currentNumber = number
}
}
}
struct Home: View {
let characterLimit = 9
//MARK: - Computed propety
var displayedString: String {
return String(String(format: "%.01f",
arguments: [state.currentNumber]).prefix(characterLimit))
}
我希望它每 3 个字符有一个间距,与 IOS 的本机计算器应用程序相同。
你应该使用 NumberFormatter
。示例:
var displayedString: String {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
return String((formatter.string(for: state.currentNumber) ?? "").prefix(characterLimit))
}
请注意,输出取决于语言环境。在一种语言环境中,它可以输出 123,456,789
。在另一个语言环境中,它可能是 123 456 789
,而在第三个语言环境中,它可能是 123.456.789
。我很确定有些语言环境使用不同的组大小。计算器应用程序也有此行为。例如,对于我 phone 上的计算器应用程序,它使用逗号而不是空格作为分隔符。
如果无论 phone 的语言环境设置在哪里,都希望每 3 位使用空格进行分组,您可以手动设置:
formatter.groupingSeparator = " "
formatter.groupingSize = 3