验证输入 - 字符串

时间:2017-05-20 14:20:46

标签: java string validation

我正在尝试验证来自文本字段的输入,以便它只包含来自a-z的字符。我使用以下方法来验证输入是否为int:

//VALIDATE IF INPUT IS NUMERIC.
public static boolean isInt(JFXTextField txtUserInput, String userInput) {
    try {
        int intValidation = Integer.parseInt(userInput);
        txtUserInput.setStyle("-fx-border-color: ; -fx-border-width: 0px ;");
        return true;
    } catch(NumberFormatException exception) {
        showErrorMsg("Invalid Input:", "Please enter a numeric-only value");
        txtUserInput.setStyle("-fx-border-color: RED; -fx-border-width: 1px ;");
        return false;
    }
}

如何使用String实现此目的?我知道使用if语句有一种不同的方法,但我想知道是否可以像上面的例子一样捕获异常。

由于

3 个答案:

答案 0 :(得分:1)

您可以将matches与正则表达式一起使用,因此如果您想检查输入是否为int,则可以使用:

String userInput = ...;
if(userInput.matches("\\d+")){
    System.out.println("correct");
}else{
    System.out.println("Not correct");
}

如果要检查输入是否仅包含字母,可以使用:

if(userInput.matches("[a-zA-Z]+")){
    System.out.println("correct");
}else{
    System.out.println("Not correct");
}

如果您想检查输入是否包含字母数字,可以使用:

if(userInput.matches("[a-zA-Z0-9]+")){
    System.out.println("correct");
}else{
    System.out.println("Not correct");
} 

答案 1 :(得分:1)

使用正则表达式:

if (!userInput.matches("[a-z]+"))
    // Has characters other than a-z

如果你也想允许大写:

if (!userInput.matches("[a-zA-Z]+"))
    // Has characters other than a-z or A-Z

答案 2 :(得分:0)

您可以使用以下内容:

if (!userInput.matches(".*[^a-z].*")) { 
    // Do something
}

@ Bohemian的替代解决方案♦允许大写:

if (!userInput.toLowerCase().matches(".*[^a-z].*")) { 
    // Do something
}

根据您的消息来源,类似的方法:

public static boolean containsAZ(JFXTextField txtUserInput) {
        if (!txtUserInput.getText().toLowerCase().matches(".*[^a-z].*"))
            return true;
        else
            System.err.println("Input is not containing chars between A-Z");

        return false;
}

您的问题是,如果可以抛出/捕获异常,您可以执行以下操作:

public static boolean containsAZ(JFXTextField txtUserInput) {
        try {
            if (!txtUserInput.toLowerCase().matches(".*[^a-z].*")) {
                return true;
            } else
                throw new MyException("Something happened");
        } catch (MyException e) {
            e.printStackTrace();
        }
        return false;
    }

考虑到你需要一个班级:

class MyException extends Exception {

    public MyException(String e) {
        System.out.println(e);
    }

}

一个抽象的解决方案是:

public class MyException extends Exception {
        // special exception code goes here
}

将其扔为:

 throw new MyException ("Something happened")

赶上:

catch (MyException e)
{
   // Do something
}

有关详细信息,请check this for regex