2017-10-14 6 views
2

"、"セパレータを "私のテキストフィールドで?ユーザーは「5,6」のようなものを入力することができますが、ボタンを押すと入力したデータを「5.6」から「5.6」にしたいので、小数点の計算が行われないためです。カンマをTextFieldの小数点の区切りに置き換えてください。

私はこの拡張文字列ファイルを持っていますが、 "、"を "。"に変換しないで、カンマの後の10進数の2桁の数字は&です。

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 
} 

}

答えて

1

あなたの文字列を置換

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

ありがとうございます!これは動作しています! – AndreiVataselu

0

ためのコード下のボタン書き込みをクリックするとあなたはUITextFieldの

class ViewController: UIViewController, UITextFieldDelegate 

ためのデリゲートメソッドを追加してから追加する必要がありますビューディドロイドの自己

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

そして今、あなたの置換文字列だけでなく、現時点でいただきました!テキストフィールドのテキストを取得することができ、文字

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)) 

} 

を変更するあなたができる機能の中に、以下の機能を追加します。!

関連する問題