将字符串拆分为一个int数组

时间:2011-12-15 08:59:05

标签: java arrays string stringtokenizer

我有一个字符串s =“1,2,3,4,5”。我正在使用split()方法拆分字符串然后我想将它存储到一个整数数组中 我尝试了以下操作,但它不起作用。

int i[]=Integer.parseInt(s.split(","));

我想知道是否可以在不使用循环的情况下执行此操作。

在C#中有类似Array.convertAll的东西,但我不知道java中有类似的东西。

5 个答案:

答案 0 :(得分:1)

在java中,没有这样的方法(方法)可以通过传递int array来直接获得String array 所以你必须写一些方法来做到这一点...... 如果有条件,你必须不必使用循环然后...我通过在Adel Boutros中添加更多代码来编写代码可能你从这里获得帮助但是它更好地循环.. :)

public class Test {
public static void main(String[] args) {
    String s = "1,2,3,4,5";
    int size = 0;
    int[] arr = new int[s.split(",").length];
    findInt(s, arr, size);
    for (int i = 0; i < arr.length; i++) {

        System.out.println(arr[i]);
    }
}

static void findInt(String s, int[] arr, int index) {
    String aa = null;
    if (s == null) {
        return;
    }
    if (s.length() != 1) {
        String text = s.substring(0, s.indexOf(","));
        arr[index] = Integer.parseInt(text);
    } else {
        arr[index] = Integer.parseInt(s);
    }
    if (s.length() != 1) {
        aa = s.substring(s.indexOf(",") + 1, s.length());
    }
    findInt(aa, arr, ++index);
}

}

答案 1 :(得分:0)

如果您不想使用循环,可以调用一个为您循环的方法。

e.g。 (您需要编写convertToInts方法)

int[] ints = convertToInts(s);

答案 2 :(得分:0)

在纯Java中,没有办法做到这一点。

在Apache Commons(特别是Commons Lang)中,有一些转换实用程序只使用数组函数并执行您想要的操作,您不必自己编写循环代码。

答案 3 :(得分:0)

public static void main (String []args) {
    String s="1,2,3,4,5";
    int size = 0;
    int [] arr = new int [s.length];
    findInt(s, arr, size);
}

void findInt(String s, int [] arr, int index) {
    if (s.isEmpty()) {
        return;
    }
    String text = s.substring(0,s.indexOf(","));
    arr[index] = Integer.parseInt(text);
    findInt(text.substring(1), arr, ++index);
}

PS:我的方法使用递归方法。变量大小将是int数组的实际大小。

答案 4 :(得分:0)

这个可能会失败你的比赛,但它确实避免了循环:)

public static void main(String[] args) throws Exception {
    ScriptEngineManager mgr = new ScriptEngineManager();
    ScriptEngine jsEngine = mgr.getEngineByName("JavaScript");
    String s = "1,2,3,4,5";
    String s1 = s.replaceAll("(\\d+),?", "arr[i++]=$1;");
    int[] arr = new int[s.split(",").length];
    jsEngine.put("arr", arr);
    jsEngine.eval("var i=0;" + s1);
}

结果是int[]填充了字符串中的数字。