在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数组。
答案 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;
}
}