Java 从字符串创建int[]数组(仅含正整数)

Java 从字符串创建int[]数组(仅含正整数),java,arrays,string,substring,replaceall,Java,Arrays,String,Substring,Replaceall,嘿,我在从字符串创建int[]数组时遇到了问题,它应该只包含字符串中的正整数 它应该这样做: INPUT: ("-5, 20, abc, -20, defg, 45ab67, 23") OUTPUT: [20,23] 我不知道如何删除这个子字符串“45ab67”。我试着用 Character.isDigit(c); and myString.replaceAll("[^\\d,-]", ""); 它没那么好用 提前thx试试 String input = "-5, 20, abc, -2

嘿,我在从字符串创建int[]数组时遇到了问题,它应该只包含字符串中的正整数

它应该这样做:

INPUT: ("-5, 20,  abc, -20, defg, 45ab67, 23")
OUTPUT: [20,23]
我不知道如何删除这个子字符串“45ab67”。我试着用

Character.isDigit(c);
and
myString.replaceAll("[^\\d,-]", "");
它没那么好用

提前thx

试试

 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) 把绳子分开, 2) 分析try-catch中的部分(Integer.parseInt(来自每个部分);)
3) 如果没有NumberFormatException,则检查结果是否大于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);
String input=“-5,20,abc,-20,defg,45ab67,23”
String[]inputs=input.split(“,”);
int[]输出阵列;
List outputList=new ArrayList();
for(字符串输入:输入){
如果(in.trim()匹配(\\d+)){
add(Integer.parseInt(in.trim());
}
}
outputArray=outputList.toArray(新整数[outputList.size()]);
System.out.println(输出阵列);
List List=new ArrayList();
对于(字符串s:myString.split(“*,*”)){
如果(s.匹配(“^[0-9]+$”){
list.add(Integer.parseInt);
}
}
int[]结果=新的int[list.size()];
int i=0;
for(整数v:列表){
结果[i++]=v;
}
试试这个

    Matcher m = Pattern.compile("(^| )(\\d+)(,|$)").matcher(s);
    while(m.find()) {
        System.out.println(m.group(2));
    }
int[]getArray(字符串s){
字符串[]部分=s.split(“,”);
ArrayList resultArray=新的ArrayList();
用于(字符串部分:部分){
如果(部分匹配(\\d+)){
add(Integer.parseInt(part));
}
}
int[]result=new int[resultArray.size()];
对于(int i=0;i
你不需要使用“^”和“$”来阻止包含数字的字符串匹配吗?@TimB,
字符串。匹配不需要边界符号“^”和$。我愿意相信你,但Javadoc中没有提到:)@TimB,是的,docs没有提到它。如果使用
Pattern.compile()
,则需要边界符号。在解析字符串之前,需要修剪()字符串。而outputArray必须是一个
整数[]
?感谢您的
.trim()
headup。
    Matcher m = Pattern.compile("(^| )(\\d+)(,|$)").matcher(s);
    while(m.find()) {
        System.out.println(m.group(2));
    }
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;
}