2017-10-14 15 views
2

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 
} 

}

Antwort

1

Wenn Sie Code unten auf die Schaltfläche Schreib klicken für die Zeichenfolge ersetzen

let strReplace = txtField.text.replacingOccurrences(of: ",", with: ".", options: .literal, range: nil)// change "txtField" your textfield's object 
print(\(strReplace)) 
+1

Danke! Das funktioniert! – AndreiVataselu

0

Sie die Delegate Methode für UITextField

class ViewController: UIViewController, UITextFieldDelegate 

hinzufügen sollten und dann die hinzufügen Selbst in Viewdidload

override func viewDidLoad() { 
    super.viewDidLoad() 
    textField.delegate = self; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

Und dann die unten Funktion hinzufügen innerhalb der Funktion

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) { 

print("While entering the characters this method gets called") 
let strReplace = txtField.text.replacingOccurrences(of: ",", with: ".", options: .literal, range: nil) 
// change "txtField" your textfield's object 
print(\(strReplace)) 

} 

jetzt Sie in der Lage als auch das Ersatz-String zu erhalten, wie, was ist das Textfeld Text derzeit die Zeichen Sie in der Lage zu ändern.!

Verwandte Themen