How to Convert a String to an Array in Java

Java makes it easy to convert a string to an array by providing the built-in .split() method on the String object.

The challenge

Write a function to split a string and convert it into an array of words. For example:

"Robin Singh" ==> ["Robin", "Singh"] "I love arrays they are my favorite" ==> ["I", "love", "arrays", "they", "are", "my", "favorite"]
Code language: PHP (php)

The solution in Java code

This is a really simple one, you just split the string with the space character:

public class Solution { public static String[] stringToArray(String s) { return s.split(" "); } }
Code language: Java (java)

However, if you prefer not to use the space character, you can opt for using \\s+ instead:

public class Solution { public static String[] stringToArray(String s) { return s.split("\\s+"); } }
Code language: Java (java)

Test cases to validate our Java solution

import org.junit.Test; import static org.junit.Assert.assertArrayEquals; import org.junit.runners.JUnit4; public class SolutionTest { @Test public void basicTests() { assertArrayEquals(new String[]{"Robin", "Singh"}, Solution.stringToArray("Robin Singh")); assertArrayEquals(new String[]{"I", "love", "arrays", "they", "are", "my", "favorite"}, Solution.stringToArray("I love arrays they are my favorite")); } }
Code language: Java (java)

Building additional test cases

import org.junit.Test; import static org.junit.Assert.assertArrayEquals; import org.junit.runners.JUnit4; public class SolutionTest { @Test public void basicTests() { assertArrayEquals(new String[]{"Robin", "Singh"}, Solution.stringToArray("Robin Singh")); assertArrayEquals(new String[]{"I", "love", "arrays", "they", "are", "my", "favorite"}, Solution.stringToArray("I love arrays they are my favorite")); } @Test public void randomTests() { for(int i = 0; i < 200; i++){ String testString = makeString(0,30); assertArrayEquals(randomTest(testString), Solution.stringToArray(testString)); } } private String makeString(int min, int max) { StringBuilder sb = new StringBuilder(); int length = (int)Math.ceil((Math.random() * max) + min); for (int i = 0; i < length; i++) { sb.append(makeWord(min, max)); if (i < length-1) sb.append(" "); } return sb.toString(); } private String makeWord(int min, int max) { StringBuilder sb = new StringBuilder(); String possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; int length = (int)Math.ceil((Math.random() * max) + min); for(int i = 0; i < length; i++) { sb.append(possible.charAt((int)Math.floor(Math.random() * possible.length()))); } return sb.toString(); } private String[] randomTest(String s){ return s.split(" "); } }
Code language: Java (java)
Tags:
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments