What is the most elegant way to convert a hyphen separated word (e.g. "do-some-stuff") to the lower camel-case variation (e.g. "doSomeStuff")?

Viewed 22782

What is the most elegant way to convert a hyphen separated word (e.g. "do-some-stuff") to the lower camel-case variation (e.g. "doSomeStuff") in Java?

11 Answers

For those who has com.fasterxml.jackson library in the project and don't want to add guava you can use the jaskson namingStrategy method:

new PropertyNamingStrategy.SnakeCaseStrategy.translate(String);

In case you use Spring Framework, you can use provided StringUtils.

import org.springframework.util.StringUtils;

import java.util.Arrays;
import java.util.stream.Collectors;

public class NormalizeUtils {

    private static final String DELIMITER = "_";    

    private NormalizeUtils() {
        throw new IllegalStateException("Do not init.");
    }

    /**
     * Take name like SOME_SNAKE_ALL and convert it to someSnakeAll
     */
    public static String fromSnakeToCamel(final String name) {
        if (StringUtils.isEmpty(name)) {
            return "";
        }

        final String allCapitalized = Arrays.stream(name.split(DELIMITER))
                .filter(c -> !StringUtils.isEmpty(c))
                .map(StringUtils::capitalize)
                .collect(Collectors.joining());

        return StringUtils.uncapitalize(allCapitalized);
    }
}
Related