Kann mir jemand sagen, wie ich ein "," Trennzeichen durch ein "ersetzen kann." in meinem Textfeld? Der Benutzer kann etwas wie "5,6" eingeben, aber wenn er einen Knopf drückt, möchte ich die Daten, die er eingegeben hat, als "5,6" bis "5,6" einreichen, weil sonst die Dezimalberechnungen nicht vorgenommen werden.Ersetzen Sie Komma durch das Dezimaltrennzeichen von TextField
Ich habe diese Erweiterung String-Datei aber scheint nur für die Begrenzung von 1 Komma in Text & 2 Dezimal nach dem Komma, nicht die Umwandlung der "," in "."
extension String {
private static let decimalFormatter:NumberFormatter = {
let formatter = NumberFormatter()
formatter.allowsFloats = true
return formatter
}()
private var decimalSeparator:String{
return String.decimalFormatter.decimalSeparator ?? "."
}
func isValidDecimal(maximumFractionDigits:Int)->Bool{
guard self.isEmpty == false else {
return true
}
// Check if valid decimal
if let _ = String.decimalFormatter.number(from: self){
// Get fraction digits part using separator
let numberComponents = self.components(separatedBy: decimalSeparator)
let fractionDigits = numberComponents.count == 2 ? numberComponents.last ?? "" : ""
return fractionDigits.characters.count <= maximumFractionDigits
}
return false
}
var doubleValue: Double {
let nf = NumberFormatter()
nf.decimalSeparator = "."
if let result = nf.number(from: self) {
return result.doubleValue
} else {
nf.decimalSeparator = ","
if let result = nf.number(from: self) {
return result.doubleValue
}
}
return 0
}
}
Danke! Das funktioniert! – AndreiVataselu