如何在 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