需求:
輸入銀行卡號需要四個數(shù)字一組兔甘,想找個現(xiàn)成沒找到拆讯,沒辦法只有自己寫了
構(gòu)思:
需要監(jiān)聽輸入框的變化,不斷修改輸入框的輸入文本的格式
實現(xiàn):
第一步:
在分類中添加格式化字符串代碼和移除空格代碼
extension String{
/*
*去掉所有空格
*/
var removeAllSapce: String {
return self.replacingOccurrences(of: " ", with: "", options: .literal, range: nil)
}
/// 分組格式化
/// - Parameter joined: 間隔字符串
/// - Returns: 格式化好的字符串
public func formateForBankCard(joined: String = " ") -> String {
guard self.count > 0 else {
return self
}
let length: Int = self.count
let count: Int = length / 4
var data: [String] = []
for i in 0..<count {
let start: Int = 4 * i
let end: Int = 4 * (i + 1)
data.append(self[start..<end])
}
if length % 4 > 0 {
data.append(self[4 * count..<length])
}
let result = data.joined(separator: " ")
return result
}
}
使用方式
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var textView: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
self.textView.delegate = self
self.textView.addTarget(self, action: #selector(textChange), for: .editingChanged)
}
@objc func textChange(){
let text = self.textView.text
let tempText = text!.removeAllSapce
self.textView.text = tempText.formateForBankCard()
}
}