从String创建int []数组(仅限正整数)

时间:2013-12-06 10:34:57

标签: java arrays string substring replaceall

嘿,我在使用Strings创建一个int []数组时遇到了麻烦,它应该只包含String中的正整数。

它应该做这样的事情:

INPUT: ("-5, 20,  abc, -20, defg, 45ab67, 23")
OUTPUT: [20,23]

我不知道如何删除此子字符串“45ab67”。我尝试使用

Character.isDigit(c);
and
myString.replaceAll("[^\\d,-]", "");

效果不好......

事先提前

6 个答案:

答案 0 :(得分:5)

尝试,

 String input = "-5, 20, abc, -20, defg, 45ab67, 23";
 String[] arr = input.split(",");
 for (String num : arr) {
      if (num.trim().matches("\\d+")) {
        System.out.println(num);
      }
 }

答案 1 :(得分:0)

1)将字符串拆分为, 2)在try-catch中解析部分(Integer.parseInt(来自每个部分);) 3)如果没有NumberFormatException,则检查结果是否为> 0,如果是,请将其添加到最终列表

答案 2 :(得分:0)

这应该做的工作:

String input = "-5, 20,  abc, -20, defg, 45ab67, 23"
String[] inputs = input.split(",");

int[] outputArray;
List<Integer> outputList = new ArrayList<>();

for (String in : inputs) {
    if (in.trim().matches("\\d+")) {
        outputList.add(Integer.parseInt(in.trim()));
    }
}

outputArray = outputList.toArray(new Integer[outputList.size()]);

System.out.println(outputArray);

答案 3 :(得分:0)

List<Integer> list = new ArrayList<Integer>();
for (String s: myString.split(" *, *")) {
    if (s.matches("^[0-9]+$")) {
        list.add(Integer.parseInt(s));
    }
}
int[] result = new int[list.size()];
int i = 0;
for (Integer v: list) {
    result[i++] = v;
}

答案 4 :(得分:0)

试试这个

    Matcher m = Pattern.compile("(^| )(\\d+)(,|$)").matcher(s);
    while(m.find()) {
        System.out.println(m.group(2));
    }

答案 5 :(得分:0)

int[] getArray(String s) {
    String[] parts = s.split(", ");
    ArrayList<Integer> resultArray = new ArrayList<>();
    for (String part : parts) {
        if (part.matches("\\d+")) {
            resultArray.add(Integer.parseInt(part));
        }
    }
    int[] result = new int[resultArray.size()];
    for (int i = 0; i < resultArray.size(); i++) {
        result[i] = resultArray.get(i);
    }
    return result;
}