正确的int数组

时间:2016-12-08 05:53:11

标签: java arrays regex

如果可以将字符串参数转换为int数组,我需要验证它。

String pattern = "(\\d+[,])+";
String test = "18,32,5,8,10";

test2.matches(pattern2) //returns false as i requires , in the end

有没有办法忽视最后一次' ,'

4 个答案:

答案 0 :(得分:4)

使用组构造指定数字后跟(,数字)...

\\d+(?:,\\d+)+

答案 1 :(得分:0)

此正则表达式适用于您(检查“有效数组”):

public static void main(String[] args) {
    String s = "18,32,5,8,10";
    System.out.println(s.matches("(?!.*,$)(?!,.*$)(\\d+(?:,|$))+"));
}

检查并失败:

  1. 多个连续逗号
  2. 开头的逗号
  3. 逗号结尾

答案 2 :(得分:0)

由于我不知道如何使用正则表达式,如果我在你的位置,那么这将是我这样做的方式

String test = "18,32,5,8,10";
String str[]=test.split(",");
int ar[] = new int[str.length];
for(int i = 0; i<ar.length; i++){
    ar[i] = Integer.parseInt(str[i]);
}

这个代码中的问题,如果我能看到的话,调用parseInt()方法必须包装在try-catch中,因为如果你的字符串包含除digit和逗号(,)之外的值,它会抛出NumberFormatException。 p>

答案 3 :(得分:0)

数组和单个元素的正则表达式

(\d|\[(\d|,\s*)*])