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