嘿,我在使用Strings创建一个int []数组时遇到了麻烦,它应该只包含String中的正整数。
它应该做这样的事情:
INPUT: ("-5, 20, abc, -20, defg, 45ab67, 23")
OUTPUT: [20,23]
我不知道如何删除此子字符串“45ab67”。我尝试使用
Character.isDigit(c);
and
myString.replaceAll("[^\\d,-]", "");
效果不好......
事先提前答案 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;
}