Swift:如何从字符串中删除特殊字符?
我想删除Swift:如何从字符串中删除特殊字符?,swift,string,character,special-characters,Swift,String,Character,Special Characters,我想删除字符串中的特殊字符,,以便将该值转换为双精度。我该怎么做 例如: let stringValue = "4,000.50"; 我试图使用NumberFormatter,但得到nil错误 let NF = NumberFormatter(); let value = NF.number(from: stringValue); //nil 如果数字字符串总是从特定区域设置格式化,则需要将格式化程序的区域设置设置为匹配。如果不设置区域设置,则如果用户的区域设置使用不同的分组和十进制格式,则
字符串中的特殊字符,
,以便将该值转换为双精度。我该怎么做
例如:
let stringValue = "4,000.50";
我试图使用NumberFormatter
,但得到nil
错误
let NF = NumberFormatter();
let value = NF.number(from: stringValue);
//nil
如果数字字符串总是从特定区域设置格式化,则需要将格式化程序的区域设置设置为匹配。如果不设置区域设置,则如果用户的区域设置使用不同的分组和十进制格式,则不会解析字符串
let stringValue = "4,000.50"
let nf = NumberFormatter()
nf.numberStyle = .decimal
nf.locale = Locale(identifier: "en_US")
let value = nf.number(from: stringValue)
仅供参考-这是Swift,行尾不需要分号。如果您只需要一个只有数字和小数的经过消毒的字符串,那么在Xcode 9.0+中,您可以执行以下操作:
let originalString = "4,000.00"
let numberString = originalString.filter({ "1234567890.".contains($0) })
// numberString -> "4000.00"
然后,将经过消毒的字符串转换为浮点值
if let num = Float(numberString) {
// do something with float
} else {
// failed to init float with string
}
与@rmaddy相同,但使用字符串replacingOccurrences
:
var stringValue = "4,000,000.50"
stringValue = stringValue.replacingOccurrences(of: ",", with: "")
let nf = NumberFormatter()
let value = nf.number(from: stringValue)
print(value)
如果您知道您正在使用货币,您可以利用连续数字的模式来清除任何十进制和千位分隔符的文本值。如果有小数,它们将是最后一组,并且正好有两位数(对于大多数货币)。基于这一假设,您不需要知道使用了哪一个分隔符,而且您还可以适应其他字符的存在,例如货币名称或符号:
let textValue = "Balance : 1 200,33 Euros"
let nonDigits = CharacterSet(charactersIn: "01234456789").inverted
let digitGroups = textValue.components(separatedBy:nonDigits).filter{!$0.isEmpty}
let textNumber = digitGroups.dropLast().joined(separator:"")
+ ( digitGroups.last!.characters.count == 2
&& digitGroups.count > 1 ? "." : "" )
+ digitGroups.last!
textNumber // 1200.33
为什么不使用NumberFormatter
将字符串转换为数字呢?它的意思是nil@rmaddylet stringValue=“4000”;设NF=NumberFormatter();let value=NF.number(from:stringValue);是什么?如果您在使用数字格式时遇到问题,请使用相关代码更新您的问题。1。设置格式化程序的样式。2.你所在的地区是什么?3.字符串是否始终使用逗号,或者数字字符串的格式是否通常与用户的区域设置相同?如果用户的区域设置使用的小数分隔符不是
,则此操作无效。