[英]How to apply textFieldShouldBeginEditing on one specific UITextField in Swift
[英]How to read a specific format ( XXX.X ) from UItextfield in swift?
我想从文本字段中以XXX.X格式快速读取文本。假设以XXX.X格式表示:
换句话说,如果用户未输入“。”,则句点左侧的文本最多只能有3个字符,而左侧的文本最多只能有1个字符或完全没有字符。
目前,我的代码仅适用于“。”数量的限制。
func textField(textField: UITextField,shouldChangeCharactersIn range: NSRange,replacementString string: String) -> Bool
{
let countdots = textField.text.components(separatedBy: ".").count)! - 1
if countdots > 0 && string == "."
{
return false
}
return true
}
尝试这样的事情(正则表达式可能是错误的,您需要自己修复)
-(BOOL)isValidValue:(NSString *)checkString{
NSString *stricterFilterString = @"^[0-9]{1,3}[.][0-9]{1}";
NSPredicate *valueTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", stricterFilterString];
return [valueTest evaluateWithObject:checkString];
}
测试:
NSLog(@"%@", [self isValidValue:@"123.3"] ? @"YES" : @"NO");
[更新]
对于Swift 3 :
func valueCheck(_ checkString: String) -> Bool {
var result = false
do {
let regex = try RegularExpression(pattern: "^[0-9]{1,3}[.][0-9]{1}", options: [])
let results = regex.matches(in: checkString, options: [], range: NSMakeRange(0, checkString.characters.count))
if results.count > 0 {
return true
} else {
return false
}
} catch let error as NSError {
print("invalid regex: \(error.localizedDescription)")
}
return false
}
func valid(_ s:String) -> Bool {
func roundToPlaces(value:Double, places:Int) -> Double {
let divisor = pow(10.0, Double(places))
return round(value * divisor) / divisor
}
if let num = Double(s) {
if num >= 1000.0 {
return false
}
if roundToPlaces(value:num, places:1) != num {
return false
}
return true
} else {
return false
}
}
测试您的输入:
let test = [
"123.3",
"48.2",
"1.4",
"4",
"4.3.4",
"5555.5",
"123.34"
]
for s in test {
print(valid(s))
}
结果:
true
true
true
true
false
false
false
这就是您的输入和所需的输出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.