在JavaFx eclipse应用程序中,在将数据保存到SQL数据库之前,需要验证以下条件:数字值类似或混合。但是,如果纯非数字带有特殊字符(如 JHGYyree),则拒绝。 允许的文本:1234、A1254、b64A8(忽略大小写) 不允许:aasdrgf、ASDSA、Asxss、@#vdvd、@33KJJJ、#@878sasa。
按 Enter 键或鼠标单击“保存”按钮后,将检查输入的数据。 如何在JavaFX中编写这样的函数?
@FXML
private Label lblOffName;
Boolean static input_validation == false;
String id = txtOffName.getText();
if(validate_text(id) == true){
}
public Boolean validate_text(String str){
// validation code here ...
return input_validation;
}
示例
使用循环的示例解决方案。 您可以使用正则表达式来代替,但我将其作为练习留给读者。
package application;
public class InputValidator {
public static void main(String[] args) {
String[] testData = {
"1234", "A1254", "b64A8", // valid
"aasdrgf", "ASDSA", "Asxss", "@#vdvd", "@33KJJJ", "#@878sasa" // invalid
};
for (String input: testData) {
validate(input);
}
}
/**
* Either Numeric Value like or Mixed. But, to reject if purely non-numeric with(out) special characters like JHGYyree.
* @param input string to validate
* @return true if the input string is value.
*/
private static boolean validate(String input) {
boolean hasDigit = false;
boolean hasAlpha = false;
boolean hasSpecial = false;
for (int i = 0; i < input.length(); i++) {
char c = Character.toLowerCase(input.charAt(i));
if (isDigit(c)) {
hasDigit = true;
}
if (isAlpha(c)) {
hasAlpha = true;
}
if (!isDigit(c) && !isAlpha(c)) {
hasSpecial = true;
}
}
boolean isValid =
(hasDigit && !hasAlpha && !hasSpecial) || (hasDigit && hasAlpha && !hasSpecial);
System.out.println(input + " > " + isValid);
return isValid;
}
private static boolean isDigit(char c) {
return '0' <= c && c <= '9';
}
private static boolean isAlpha(char c) {
return 'a' <= c && c <= 'z';
}
}
输出
1234 > 正确 A1254 > 正确 b64A8 > 正确 aasdrgf > 假 ASDSA > 假 Asxss > 假 @#vdvd > 假 @33KJJJ > 假 #@878sasa > 假
与 JavaFX 集成
我也会将此作为练习留给读者。
您可以自己编写集成代码,或者利用验证框架,例如: