我需要检查用户输入的字符串的剪裁版本是否具有以下格式:
(整数,整数)
我该怎么做?我正在考虑使用正则表达式,但我对它们并不太熟悉。例如,我不知道如何将输入的数字限制为整数的最大值。
答案 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。