在正%变化前添加+号

时间:2017-12-27 19:08:22

标签: ios swift string symbols

我从API中获取数据以显示在我的iOS应用中。这些数据中的一些是百分比,因此当它为负时它显示为-0.98%,例如,没有问题,但为了清楚起见,我希望正变量显示为+0.98而不仅仅是0.98。

这是我更新标签时的代码:

func updateBitcoinUI(with bitcoinInfo: Bitcoin) {
    DispatchQueue.main.async {
        self.bitcoinPercentageChangeLabel.text = String(format: "%.2f%%", Double(bitcoinInfo.percentChange24h) ?? 0)
    }
}

当百分比为正时,有没有办法在字符串中添加+符号?

3 个答案:

答案 0 :(得分:7)

这是NumberFormatter的目的。使用此而不是硬编码格式将正确处理使用其他百分比和分隔符格式的语言环境中的本地化。例如:

var formatter = NumberFormatter()
formatter.numberStyle = .percent
formatter.positivePrefix = formatter.plusSign
formatter.maximumFractionDigits = 2

let value = 0.0098
formatter.string(for: value)    // +0.98%

formatter.locale = Locale(identifier: "ar")  // Arabic
formatter.string(for: value)    // ٠٫٩٨ ٪؜+

答案 1 :(得分:2)

尝试使用此字符串格式表达式“%+。2f %%”

另外:http://pubs.opengroup.org/onlinepubs/009695399/functions/printf.html

答案 2 :(得分:0)

当值为正时,您可以使用三元运算符将String格式更改为"+%.2f%%"

let percentChangeString = "0.98"
guard let percentChange = Double(percentChangeString) else { return }
let percentString = percentChange > 0 ? String(format: "+%.2f%%", percentChange) : String(format: "%.2f%%", percentChange)

输出:

  

0.98%

对于-0.98的输入,输出为

  

-0.98%