有没有一种从字符串遍历到int数组的方法,反之亦然

时间:2014-03-08 18:45:42

标签: java arrays string

在Java中,给定数组

int a[] = {1,2,3}

我可以Arrays.toString(a)来获取

"[1,2,3]"

是否有一种同样方便的方法将此String返回其前一个数组? 或者我是否必须完成整个split,for-loop,parseInt内容?

更新

感谢大家的所有想法。我推出了自己的功能

String src[] = data.split("\\D+");//data is intArrayAsString: [1,2,3]
int[] nums = new int[src.length - 1];
int ndx = 0;
for (String s : src) {
  try {
    nums[ndx] = Integer.parseInt(s);
    ndx++;
  } catch (NumberFormatException e) {
  }
}
return nums;

注意:traverse这个词似乎已经让一些人失望了。通过“遍历”,我的意思是能够从字符串前后移动到int数组。

2 个答案:

答案 0 :(得分:1)

据我所知,没有。

但使用Split很容易。

如果您不明白该怎么做,我就这么做了:

int[] arr = {1, 2, 3, 4};
String toString = Arrays.toString(arr);

System.out.println(toString);

// we know it starts with [ and ] so we skip it
String[] items = toString.substring(1, toString.length() - 1).split(",");
int[] arr2 = new int[items.length];
for (int i = 0; i < items.length; ++i)
{
    arr2[i] = Integer.parseInt(items[i].trim()); // .trim() because it adds the space and parseInt don't like spaces
}

System.out.println(Arrays.toString(arr2));

(免费改进,只是草稿)

答案 1 :(得分:0)

我不知道任何现有的方法,所以我写了我自己的版本:

import java.util.Arrays;


public class ArrayToString {

    public static void main(String[] args) {
        int a[] = {1,2,3};
        String serialized = Arrays.toString(a);
        System.out.println(serialized);

        int[] b = stringToIntArray(serialized);

        System.out.println(Arrays.toString(b));
    }

    private static int[] stringToIntArray(String serialized) {

        // remove '[' and ']'
        String raw = serialized.replaceAll("^\\[(.*)\\]$", "$1");

        // split by separators
        String[] splitStrings = raw.split(", ");

        // create new int array
        int[] b = new int[splitStrings.length];
        for (int i = 0; i < splitStrings.length; i++) {
            String splitString = splitStrings[i];

            // parse each text individually
            b[i] = Integer.parseInt(splitString);
        }
        return b;
    }

}