2015-11-04 94 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