2017-10-14 85 views
2

有人能告訴我如何用「。」替換「,」分隔符。在我的文本框?用戶可以輸入類似於「5,6」的東西,但是當他按下一個按鈕時,我想將他輸入的數據作爲「5,6」輸入到「5.6」,因爲否則不會進行小數計算。用TextField中的小數點分隔符替換逗號

我有這個擴展字符串文件,但似乎工作僅限於1逗號文本的限制&逗號後面的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 

然後添加self in viewdidload

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

} 

現在你能得到替換字符串以及什麼目前文本框的文字!

相關問題