我编写了一个Java程序,尝试从int[]
这样的字符串中获取1,2,5,2,11
。
但首先我需要判断用户是否选择了正确的格式,例如“,”+数字。如何将其写为Java正则表达式?
//set the default value of int[] a;
int[] a = {2,3,1,-2,2,7};
//set the UI;
String text = JOptionPane.showInputDialog("please enter the array to be checked: ");
String[] strs = text.split(",");
System.out.println(strs);
System.out.println(strs.length);
int[] a2 = new int[strs.length];
for(int i = 0; i < strs.length; i++){
a2[i] = Integer.parseInt(strs[i]);
}
嘿伙计们,抱歉没有第一次说清楚,我希望用户输入“,”+任何正数或负数的格式,并且可以容忍空间,就像 “1,-2,1,3,+ 55”
答案 0 :(得分:5)
您根本不需要正则表达式,仅String#split(",")
和Integer#parseInt()
。
无论如何,单凭正则表达不足以将字符串转换为数字。
答案 1 :(得分:3)
要验证您的输入,您可以使用类似
的内容if (text.matches("-?\\d+(,\\s?-?\\d+)*")){
//try to split
}else{
//inform user about wrong data format
}
-?
表示减号是可选的\\d+
表示一个或多个数字,,\\s?-?\\d+
表示“逗号”,“空格”(一个或没有),“减号”(一个或没有),“数字”(一个或多个),(,\\s?-?\\d+)*
表示此结构可以出现零次或多次。