Ios 在转换字符串之前,请检查该字符串是否具有货币符号
我有一个字符串,我正试图转换成十进制,我可以这样做 这是转换1.50的字符串,我通过下面的函数运行它,得到正确的十进制数。但有时该字符串可能看起来像$1.50,在这种情况下,传递到第一个函数失败。如果我将其传递给第二个可以工作的函数,但我需要能够确定如何确定字符串是否有货币符号。或者像我认为的那样,将两个功能合并为一个Ios 在转换字符串之前,请检查该字符串是否具有货币符号,ios,swift,Ios,Swift,我有一个字符串,我正试图转换成十进制,我可以这样做 这是转换1.50的字符串,我通过下面的函数运行它,得到正确的十进制数。但有时该字符串可能看起来像$1.50,在这种情况下,传递到第一个函数失败。如果我将其传递给第二个可以工作的函数,但我需要能够确定如何确定字符串是否有货币符号。或者像我认为的那样,将两个功能合并为一个 func decimalFormat(stringNumber:String) -> Decimal{ print("\(stringNumber) is the
func decimalFormat(stringNumber:String) -> Decimal{
print("\(stringNumber) is the number being passed")
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
let number = numberFormatter.number(from: stringNumber)
print("\(number!) is the number")
let amount = number?.decimalValue
return amount!
}
问题是,有时候字符串有一个货币符号,我想检查本地符号是什么,然后用类似这样的东西来转换它
func curencyToDecimal(stringNumber:String) -> Decimal{
print("\(stringNumber) is the number being passed")
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .currency
let number = numberFormatter.number(from: stringNumber)
print("\(number!) is the number")
let amount = number?.decimalValue
return amount!
}
在尝试转换之前,我不确定如何检查符号。您不需要手动检查货币符号。如果转换失败,您只需将
numberFormatter.numberStyle
更改为.currency
。我还建议将函数返回设为可选,因为某些输入值的转换可能会失败
func decimalFormat(stringNumber:String) -> Decimal?{
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
if let number = numberFormatter.number(from: stringNumber) {
return number.decimalValue
}
numberFormatter.numberStyle = .currency
if let number = numberFormatter.number(from: stringNumber) {
return number.decimalValue
}
return nil
}
该函数使用Localeen_US
为以下输入值提供正确的输出
decimalFormat(stringNumber: "123.45") //123.45
decimalFormat(stringNumber: "$123.45") //123.45
您不需要手动检查货币符号。如果转换失败,您只需将
numberFormatter.numberStyle
更改为.currency
。我还建议将函数返回设为可选,因为某些输入值的转换可能会失败
func decimalFormat(stringNumber:String) -> Decimal?{
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
if let number = numberFormatter.number(from: stringNumber) {
return number.decimalValue
}
numberFormatter.numberStyle = .currency
if let number = numberFormatter.number(from: stringNumber) {
return number.decimalValue
}
return nil
}
该函数使用Localeen_US
为以下输入值提供正确的输出
decimalFormat(stringNumber: "123.45") //123.45
decimalFormat(stringNumber: "$123.45") //123.45
你可以用正则表达式?两个都试试怎么样?如果使用
.decimal
转换失败(返回nil),请尝试使用.currency
进行转换。请不要添加不相关的标记。[curry currency converter]是关于某个jQuery插件的。icekomo,你能提供一些示例和预期结果吗?@Raymond,我添加了一个字符串示例,我将传递给函数。你可能会使用正则表达式。两个都试试怎么样?如果使用.decimal
转换失败(返回nil),请尝试使用.currency
进行转换。请不要添加不相关的标记。[curry currency converter]是关于jQuery插件的。icekomo,你能提供一些示例和预期结果吗?@Raymond,我添加了一个字符串示例,我将传递给函数。