JAVA检查字符串的特定格式?

时间:2015-10-30 19:01:36

标签: java regex string int

我需要检查用户输入的字符串的剪裁版本是否具有以下格式:

(整数,整数)

我该怎么做?我正在考虑使用正则表达式,但我对它们并不太熟悉。例如,我不知道如何将输入的数字限制为整数的最大值。

3 个答案:

答案 0 :(得分:3)

例如(5,2)

\(-?\d+,-?\d+\)使用此正则表达式

答案 1 :(得分:0)

String input = "(12345,67890)";
if(input.charAt(0) != '(' || input.charAt(input.length() - 1) != ')')
    return false;
input = input.substring(1, input.length() - 2);
String[] numbers = input.split(",");
if(numbers.length != 2)
    return false;
try
{
    Integer.parseInt(numbers[0]);
    Integer.parseInt(numbers[1]);
}
catch(NumberFormatException e)
{
    return false;
}
return true;

这将确保您确实可以解析这两个数字,否则会抛出异常并返回false

答案 2 :(得分:0)

public boolean matches(String regex) 判断此字符串是否与给定的正则表达式匹配。  java doc:http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#matches(java.lang.String)

示例:

public class Test {
  public static void main(String[] args) {
    String input = "(2147483648,-2147483649)";
    System.out.println(checkInputValidity(input));
  }

  public static boolean checkInputValidity(String input){
    String[] splitInput=null;
    // Motch the pattern
    if(input.matches("\\(-?\\d+,-?\\d+\\)")){
        splitInput = input.split(",");
        int a = 0 ;
        int b = 0 ;
        //Make sure the first part is an integer
        try{
            a = Integer.parseInt(splitInput[0].replace("(",""));
        }catch(NumberFormatException e){
            return false;
        }
        //Make sure the second part is an integer
        try{
            b = Integer.parseInt(splitInput[1].replace(")",""));
        }catch(NumberFormatException e){
            return false;
        }
        return true;
    }
    return false;
  }
}

如果匹配则输出true,否则输出false。