简体   繁体   中英

Java - Split a string to an array

I have a number that is submitted by the user.
I want to make something like this: 1568301
to an array like this: 1, 5, 6, 8, 3, 0, 1 .

How can I do this without adding "," between every digit or something like that? (type int).

Thanks.

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

will do roughly what you want. A more complex version using a regular expression is:

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

which uses a negative lookbehind ( split() takes a regexp - the above says split on anything provided the element to the left isn't the start-of-line. split("") would give you a leading blank string).

The second solution is more complex but gives you an array of Strings . Note also that it'll give you a one-element empty array for a blank input. The first solution gives you an array of Chars . Either way you'll have to map these to Integers (perhaps using Integer.parseInt() or Character.digit() ?)

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

You can use the Split with "" It'll be like this:

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

cant you simply populate the array by iterating over the String ??

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

or even better

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

To get the values in an array of integers:

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));
}

The second parameter of Character.digit(char, int) is the number base. I'm assuming your number is base 10.

If your number is in String format, you can simply do this:

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

Are expecting something like this

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

I guess you are looking at to have an array of int.

I would suggest to have the following code :

String str = "1568301";
int [] arr = new int[str.length()];
for(int i=0; i<arr.length; i++)
{
  arr[i] = str.charAt(i)-'0';
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM