如何获取String数组中的数字并将它们放入int数组中

时间:2014-04-01 23:50:47

标签: java arrays string int parseint

我有一个包含{127,a,0,10}的String数组。我想抓取该数组中的数字并将它们放入一个现在包含{127,0,10}的int数组。

我尝试在String数组中的每个单独值上使用parseInt,但它不对字符串中的字符起作用。

谢谢!

6 个答案:

答案 0 :(得分:4)

Java 8回答:

int[] results = Arrays.stream(arr)
                    .filter(s -> s.matches("-?[0-9]+"))
                    .mapToInt(s -> Integer.parseInt(s))
                    .toArray();

编辑:更好:

int[] results = Arrays.stream(arr)
                    .filter(s -> s.matches("-?[0-9]+"))
                    .mapToInt(Integer::parseInt)
                    .toArray();

展示另一种新的酷语言功能。我应该第一次见到这个。令人遗憾的是,我还没有掌握Java 8,尽管它已经正式推出两周了。

答案 1 :(得分:2)

验证int值

您可以创建一个函数来告诉您字符串是否表示有效的int值:

public static boolean isInteger(String s) {
    try { 
        Integer.parseInt(s); 
    } catch(NumberFormatException e) { 
        return false; 
    }
    // only got here if we didn't return false
    return true;
}

来源:Determine if a String is an Integer in Java

删除不需要的元素

您现在可以轻松地在阵列上循环并删除不需要的元素,如下所示:

for(int i=0; i< myStringArray.length(); i++){
    if(!isInteger(myStringArray[i])){
        myStringArray[i]=null;
    }
}

答案 2 :(得分:0)

  

我尝试在String数组中的每个单独值上使用parseInt   但它不适用于字符串中的字符。

parseInt不适用于字符,即该API的设计。如果数值无效,它将抛出异常。所以你需要做的是将你的代码封装在try / catch中。如果是NumberFormatException,请不要将该项放在第二个数组中,否则添加。希望你能够编码。

答案 3 :(得分:0)

您可以使用正则表达式来确定字符串是否可以解析为整数。

String [] arr = {"1233", "45", "a34", "/", "0", "19"};
for(int i = 0; i < arr.length; i++)
    if(arr[i].matches("-?[0-9]+"))
        System.out.println(arr[i]);

其余的很容易做到。

编辑:这会检测正数和负数。

答案 4 :(得分:0)

尝试这样的事情

Integer[] numberArray = new Integer[stringArray.length];
int index = 0;
for(String s : stringArray) {
    try {
        Integer stringAsNumber = Interger.valueOf(s);
        numberArray[index] = stringAsNumber;
        index++;
    } catch(NumberFormatException nfe) {
        //String is not a valid number
    }
 }
 return numberArray;

答案 5 :(得分:0)

试试这个..

import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.ArrayList;

class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        String[] var = new String[]{"127","a","0","10"};
        List<Integer> var2 = new ArrayList<Integer>();
            //Integer extraction
        for (String s : var) 
        {
            try{
                var2.add(Integer.parseInt(s));
                    System.out.println(Integer.parseInt(s));

                }catch(NumberFormatException e){}
        }
            //int array if you want array only or you just use List<Integer>
            int[] array = new int[var2.size()];
            for(int i = 0; i < var2.size(); i++) array[i] = var2.get(i);
    }
}