我有一个包含{127,a,0,10}的String数组。我想抓取该数组中的数字并将它们放入一个现在包含{127,0,10}的int数组。
我尝试在String数组中的每个单独值上使用parseInt,但它不对字符串中的字符起作用。
谢谢!
答案 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值:
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);
}
}