0

我有一个用户提交的号码。
我想做这样的事情:1568301
到这样的数组:1, 5, 6, 8, 3, 0, 1

我怎么能做到这一点而不在每个数字之间添加“,”或类似的东西?(类型 int)。

谢谢。

4

8 回答 8

9
String str = "123456";
str.toCharArray();

会大致做你想做的事。使用正则表达式的更复杂的版本是:

String str = "123456";
str.split("(?<!^)");

它使用否定的lookbehind(split()采用正则表达式-上面说只要左边的元素不是行首,就可以分割任何东西。split("")会给你一个前导的空白字符串)。

第二种解决方案更复杂,但为您提供了一个Strings. 另请注意,它会为您提供一个用于空白输入的单元素空数组。第一个解决方案为您提供了一个Chars. 无论哪种方式,您都必须将它们映射到Integers(可能使用Integer.parseInt()Character.digit()?)

于 2012-11-22T15:35:15.657 回答
3

"1568301".toCharArray()应该做的工作。

于 2012-11-22T15:37:00.120 回答
2

您可以将拆分与“”一起使用,它将是这样的:

String test = "123456";
String test2[] = test.split("");
for (int i = 1; i < test2.length; i++) {
    System.out.println(test2[i]);
}
于 2012-11-22T15:48:22.210 回答
1

你不能简单地通过迭代字符串来填充数组吗?

char[] arr = new char[str.length];
for(int i=0; i<str.length; i++){
   arr[i] = str.charAt(i);
}

甚至更好

char[] arr = "0123456".toCharArray();
于 2012-11-22T15:35:32.917 回答
1

要获取整数数组中的值:

String str = "1568301";
int[] vals = new int[str.length];
for (int i = 0; i < str.length(); i++) {
    vals[i] = Character.digit(str.charAt(i), /* base */ 10));
}

的第二个参数Character.digit(char, int)是基数。我假设你的号码是以 10 为底的。

于 2012-11-22T15:38:41.163 回答
1

如果您的号码是String格式,您可以简单地执行以下操作:

    String str = "1568301";
    char[] digitChars = str.toCharArray();
于 2012-11-22T15:39:30.930 回答
1

期待这样的事情

    String ss ="1568301";
    char[] chars = ss.toCharArray();
于 2012-11-22T15:39:36.077 回答
1

我猜你正在寻找一个int数组。

我建议使用以下代码:

String str = "1568301";
int [] arr = new int[str.length()];
for(int i=0; i<arr.length; i++)
{
  arr[i] = str.charAt(i)-'0';
}
于 2012-11-22T15:44:13.643 回答