Java - 将字符串拆分为数组

时间:2012-11-22 15:33:53

标签: java

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

如果不在每个数字或类似的东西之间添加“,”,我怎么能这样做? (输入int)。

感谢。

8 个答案:

答案 0 :(得分:9)

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

将大致按照您的意愿行事。使用正则表达式的更复杂版本是:

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

使用负面的lookbehind(split()采用正则表达式 - 上面说的是对任何东西进行拆分,前提是左边的元素不是行首。split("")会给你一个领先的空白字符串)。

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

答案 1 :(得分:3)

"1568301".toCharArray()应该完成这项工作。

答案 2 :(得分:2)

您可以使用拆分“” 它会是这样的:

String test = "123456";
String test2[] = test.split("");
for (int i = 1; i < test2.length; i++) {
    System.out.println(test2[i]);
}

答案 3 :(得分:1)

你不能通过遍历String ??

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

甚至更好

char[] arr = "0123456".toCharArray();

答案 4 :(得分: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号。

答案 5 :(得分:1)

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

    String str = "1568301";
    char[] digitChars = str.toCharArray();

答案 6 :(得分:1)

期待这样的事情

    String ss ="1568301";
    char[] chars = ss.toCharArray();

答案 7 :(得分: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';
}