The challenge
Write a simple CamelCase
method for strings.
All words must have their first letter capitalized without spaces.
Example:
// "HelloCase" camelCase("hello case"); // "CamelCaseWord" camelCase("camel case word");
The solution in Java code
Option 1:
public class Solution { public static String camelCase(String str) { String[] words = str.trim().split("\\s+"); if (words.length==0) return ""; StringBuilder sb = new StringBuilder(); for (int i=0; i<words.length; i++) { String word = words[i]; if (word.length()>1) { String s = word.substring(0, 1).toUpperCase() + word.substring(1, word.length()); sb.append(s); } else { sb.append(word.toUpperCase()); } } return sb.toString(); } }
Option 2:
import java.util.Arrays; import java.util.stream.Collectors; public class Solution { public static String camelCase(String str) { return (str == null || str.isEmpty())?"":Arrays.stream(str.trim().split("\\s+")) .map(s -> s.substring(0,1).toUpperCase()+s.substring(1,s.length())) .collect(Collectors.joining()); } }
Option 3:
import org.apache.commons.lang3.text.WordUtils; public class Solution { public static String camelCase(String str) { String result = ""; for(String s : str.trim().split(" ")){ result += WordUtils.capitalize(s); } return result; } }
Test cases to validate our solution
import org.junit.Test; import static org.junit.Assert.assertEquals; import org.junit.runners.JUnit4; public class SolutionTest { @Test public void testTwoWords() { assertEquals("TestCase", Solution.camelCase("test case")); } @Test public void testThreeWords() { assertEquals("CamelCaseMethod", Solution.camelCase("camel case method")); } @Test public void testLeadingSpace() { assertEquals("CamelCaseWord", Solution.camelCase(" camel case word")); } @Test public void testTrailingSpace() { assertEquals("SayHello", Solution.camelCase("say hello ")); } @Test public void testSingleLetter() { assertEquals("Z", Solution.camelCase("z")); } @Test public void testTwoSpacesBetweenWords() { assertEquals("AbC", Solution.camelCase("ab c")); } @Test public void testEmptyString() { assertEquals("", Solution.camelCase("")); } }