在Java中将String转换为int数组

Dee*_*mar 50 java

我有一个字符串

String arr= "[1,2]";
Run Code Online (Sandbox Code Playgroud)

即"[1,2]"就像一个字符串

如何在java中将此arr转换为int数组

Sau*_*aul 88

String arr = "[1,2]";
String[] items = arr.replaceAll("\\[", "").replaceAll("\\]", "").replaceAll("\\s", "").split(",");

int[] results = new int[items.length];

for (int i = 0; i < items.length; i++) {
    try {
        results[i] = Integer.parseInt(items[i]);
    } catch (NumberFormatException nfe) {
        //NOTE: write something here if you need to recover from formatting errors
    };
}
Run Code Online (Sandbox Code Playgroud)

  • 你先生,值得一枚奖牌!非常感谢!!我的字符串看起来像这样:[["1","2"],["11","5"] ...] (8认同)
  • 这很好用,我只需要添加.replaceAll(“”,“”),因为我的字符串在数字之间有空格,例如`[1313,1314,1315]`,而无需替换空格,我可以将int []作为`[ 1313,0,0]` (2认同)

Jef*_*oom 49

使用Java 8的流库,我们可以使它成为一个单行(尽管很长):

String str = "[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]";
int[] arr = Arrays.stream(str.substring(1, str.length()-1).split(","))
    .map(String::trim).mapToInt(Integer::parseInt).toArray();
System.out.println(Arrays.toString(arr));
Run Code Online (Sandbox Code Playgroud)

substring删除括号,split分隔数组元素,trim删除数字周围的任何空格,parseInt解析每个数字,然后将结果转储到数组中.我已经包括trim使这个的倒数Arrays.toString(int[]),但是这也将解析字符串没有空格,如问题.如果您只需要解析字符串Arrays.toString,则可以省略trim并使用split(", ")(注意空格).

  • 聪明.看起来像代码高尔夫球! (4认同)

Mar*_*lin 16

    final String[] strings = {"1", "2"};
    final int[] ints = new int[strings.length];
    for (int i=0; i < strings.length; i++) {
        ints[i] = Integer.parseInt(strings[i]);
    }
Run Code Online (Sandbox Code Playgroud)

  • 实现这一点的简洁方法.不过,我绝对感到失望的是,Java显然没有想到在其中一个库中使用单行程. (6认同)

mse*_*ach 5

它看起来像JSON - 它可能有点过分,取决于具体情况,但您可以考虑使用JSON库(例如http://json.org/java/)来解析它:

    String arr = "[1,2]";

    JSONArray jsonArray = (JSONArray) new JSONObject(new JSONTokener("{data:"+arr+"}")).get("data");

    int[] outArr = new int[jsonArray.length()]; 

    for(int i=0; i<jsonArray.length(); i++) {
        outArr[i] = jsonArray.getInt(i);
    }
Run Code Online (Sandbox Code Playgroud)