I am trying to split my array into separate arrays.
I have a string of of words. I split the words into an array. Now I am trying to split the array of words into their own separate array.
Example:
string = "This is a string";
words = [This, is, a, string]
I would like my output to be:
[This], [is], [a], [string]
Here's what I have so far:
String[] words = string.split(" ");
String wordsArray = Arrays.toString(words);
System.out.println(wordsArray.split(" ").toString());
and this is my output:
[Ljava.lang.String;@63947c6b
6 Answers 6
Do you mean like this, using Arrays.deepToString()
to print nested arrays?
String string = "This is a string";
System.out.println(string);
String[] words = string.split(" ");
System.out.println(Arrays.toString(words));
String[][] wordsArray = new String[words.length][];
for (int i = 0; i < words.length; i++)
wordsArray[i] = new String[] { words[i] };
System.out.println(Arrays.deepToString(wordsArray));
Output
This is a string
[This, is, a, string]
[[This], [is], [a], [string]]
If you just want to build the string you listed, this is however an easier way:
String string = "This is a string";
StringJoiner joiner = new StringJoiner("], [", "[", "]");
for (String word : string.split(" "))
joiner.add(word);
System.out.println(joiner.toString());
Output
[This], [is], [a], [string]
Or same in a single statement using streams:
System.out.println(Pattern.compile(" ")
.splitAsStream("This is a string")
.collect(Collectors.joining("], [", "[", "]")));
Or you could just cheat and do this:
String string = "This is a string";
System.out.println("[" + string.replaceAll(" ", "], [") + "]");
-
Last one... LOL :DGurwinder Singh– Gurwinder Singh2016年12月26日 18:57:47 +00:00Commented Dec 26, 2016 at 18:57
Here is one way you could build the String[][]
:
public static void main(String[] args) {
String str = "This is a string";
String[][] result = Arrays.stream(str.split(" "))
.map(word -> new String[] {word})
.toArray(String[][]::new);
// [[This], [is], [a], [string]]
String output = Arrays.deepToString(result);
output = output.substring(1, output.length()-1);
System.out.println(output);
}
As you noticed, one does not simply pass an array to println, because its default toString method will not show its elements. Therefore, use the Arrays.toString or Arrays.deepToString methods to print an arrays elements.
you can do it this way
words = "This is a string";
String[] wordsArray=words.split(" ");
Arrays.stream(wordsArray).map(s -> s="["+s+"]").forEach(System.out::println);
String s = "THis is an example";
String[] sa = s.split("\\s+");
StringJoiner sj = new StringJoiner("], [");
for (String item : sa)
sj.add(item);
System.out.println("[" + sj + "]");
Produces:
[THis], [is], [an], [example]
It can simply done as:
String string = "This is a string";
System.out.println(string);
String[] words = string.split(" ");
System.out.println(Arrays.toString(words));
String[][] wordsArray= new String[words.length][1];
for(int i=0;i<words.length;i++){
wordsArray[i][0]=words[i];
}
System.out.println(Arrays.deepToString(wordsArray));
If you want to simply print it then, it is very simple to do, using the streams api. Here is an example:
String output = Arrays.stream("This is a string".split("\\s"))
.map(s -> "[" + s + "]")
.collect(Collectors.joining(", "));
word
intoarray
ofchars
|strings
?toString()
on an array looks like[Ljava.lang.String;@63947c6b
. If you didSystem.out.println(Arrays.toString(wordsArray.split(" "));
you'd be less confused.