2015-11-04 91 views
0

格式化我用添加刪除貨幣斯威夫特

func formatAmount(number:NSNumber) -> String { 
    let formatter = NSNumberFormatter() 
    formatter.numberStyle = .CurrencyStyle 
    return formatter.stringFromNumber(number)! 
} 

改變數以貨幣格式化字符串,但我需要刪除格式和得到的只是數字,我需要刪除逗號和貨幣符號。有沒有具體的方法?請告訴我。

我試圖

func removeFormatAmount(string:String) -> NSNumber { 
    let formatter = NSNumberFormatter() 
    formatter.numberStyle = .NoStyle 
    formatter.currencySymbol = .None 
    formatter.currencyGroupingSeparator = .None 
    return formatter.numberFromString(string)! 
} 

,這給了我零值。

UPDATE 我想通了,如果文本中不包含$簽署然後用貨幣格式將給所以我做了什麼零值

if string.containsString("$") { 
    formatter.numberStyle = .CurrencyStyle 
} 
return formatter.numberFromString(string)?.floatValue 

現在它只是給了我很好的結果。

+0

你的問題不明確。給出一些關於如何調用你的函數以及你希望它們返回的例子。另請確定你的'removeFormatAmount'函數的格式。 –

+0

這裏是解釋:當我觸摸textView時,我翻轉文本。如果textview沒有「$」,那麼formatAmount,否則我需要得到普通的數字/字符串,如果它有$或「,」。 – Pawriwes

+0

請修改您的問題以包含一些示例。例子比解釋更好。 –

回答

0

NSNumberFormatter具有功能numberFromString如果從數量想要的字符串,您可以使用

let formatter = NSNumberFormatter() 
formatter.numberStyle = .CurrencyStyle 

if let number = formatter.numberFromString(string) { 
    //Use number 
} 

可以很容易地只建立從數事後

var number = formatter.numberFromString(string)! 
var string = "\(number)" 
+1

他希望得到只包含沒有逗號或貨幣符號的數字的格式化字符串。他不想分析一個字符串。 –

+0

他寫道,他只想要數字,但你的答案仍然以額外的小數形式添加格式。 – Moriya

+0

我以前的格式化,所以我需要刪除格式,所以只需要普通的數字,沒有關係,如果它是字符串或數字作爲回報。 – Pawriwes

1
func formatAmount(number:NSNumber) -> String{ 
    let formatter = NSNumberFormatter() 
    formatter.numberStyle = .CurrencyStyle 
    formatter.currencySymbol = ""     // <-------- 
    formatter.currencyGroupingSeparator = ""  // <-------- 
    return formatter.stringFromNumber(number)! 
} 
+0

我正在這樣做。和它返回零 FUNC removeFormatAmount(字符串:字符串) - >的NSNumber { 設格式化= NSNumberFormatter() formatter.numberStyle = .NoStyle formatter.currencySymbol = .None formatter.currencyGroupingSeparator = .None 返回formatter.numberFromString(串)! } – Pawriwes

0
func removeFormatAmount(string:String) -> NSNumber{ 
    let formatter = NSNumberFormatter() 
    // specify a locale where the decimalSeparator is a comma 
    formatter.locale = NSLocale(localeIdentifier: "pt_BR") 
    formatter.numberStyle = .CurrencyStyle 
    formatter.currencySymbol = "$" 
    formatter.decimalSeparator = "," 
    return formatter.numberFromString(string) ?? 0 
} 


removeFormatAmount("$15,99") // 15.99 
0
字符串

你可以創建一個字符串擴展來做到這一點

對於斯威夫特3:

extension String { 
    func removeFormatAmount() -> Double { 
     let formatter = NumberFormatter() 

     formatter.locale = Locale(identifier: "en_US") 
     formatter.numberStyle = .currency 
     formatter.currencySymbol = "$" 
     formatter.decimalSeparator = "," 

     return formatter.number(from: self) as Double? ?? 0 
    } 
} 

要使用:

let currencyString = "$1,000.00" 
let amount = currencyString.removeFormatAmount() // 1000.0