利用 NumberFormatter 顯示 Money
The Beatles 唱過,money can’t buy me love,跟 love 比起來,money 真的不算什麼。不過為了活下去,我們還是需要錢,所以接下來就讓我們學學如何在 Swift 裡將數字變成金錢格式的字串吧。
利用 NumberFormatter 將數字變成金錢格式。
import Foundation
let money = 1234
let formatter = NumberFormatter()
formatter.numberStyle = .currency
var moneyString = formatter.string(from: NSNumber(value: money))
說明
let formatter = NumberFormatter()
NumberFormatter 可以幫我們將數字變成特定的字串格式。
formatter.numberStyle = .currency
將 numberStyle 設為 .currency 可顯示金錢格式,讓字串包含金錢符號和逗號。numberStyle 的型別是 enum 定義的 Style,定義了許多 case,可將數字表示成不同的格式。
var moneyString = formatter.string(from: NSNumber(value: money))
將數字以指定的格式轉成字串,由於 string(from:) 的參數 from 型別是 NSNumber,所以我們須以 NSNumber(value: money)
將 Int 型別的 money 變成 NSNumber。
currencyPlural 格式。
顯示金錢代碼的全名,比方美金是 US dollars。
formatter.numberStyle = .currencyPlural
moneyString = formatter.string(from: NSNumber(value: money))
currencyISOCode 格式。
顯示金錢代碼的縮寫,比方美金是 USD。
formatter.numberStyle = .currencyISOCode
moneyString = formatter.string(from: NSNumber(value: money))
小數點後最多顯示幾位。
maximumFractionDigits 代表小數點後最多顯示幾位。設為 0 時表示金錢為整數,沒有小數點。
formatter.maximumFractionDigits = 0
formatter.numberStyle = .currency
moneyString = formatter.string(from: NSNumber(value: money))
指定特定國家的金錢符號。
不同的國家有不同的金錢符號,比方美金是 $,日元是 ¥。NumberFormatter 的 locale 決定格式對應的國家,因此Locale(identifier: "ja_JP")
變顯示可愛結衣生活必需的日元格式。
formatter.locale = Locale(identifier: "ja_JP")
moneyString = formatter.string(from: NSNumber(value: money))
新台幣格式。
formatter.locale = Locale(identifier: "zh_TW")
formatter.numberStyle = .currencyISOCode
moneyString = formatter.string(from: NSNumber(value: money))
formatter.locale = Locale(identifier: "zh_TW")
formatter.numberStyle = .currencyPlural
moneyString = formatter.string(from: NSNumber(value: money))
大部分的時候我們其實不用特別設定 locale,因為 iOS App 執行時,locale 會自動參考使用者手機的設定,因此台灣的使用者看到的自動會是新台幣的格式。
各國的 locale 縮寫: