String Case Conversion: camelCase, snake_case, kebab-case

Convert identifiers between camelCase, snake_case and kebab-case with word-boundary splitting, input validation and predictable output.

JavascriptData Integrity

Code

snippet
function splitWords(input) {
  if (typeof input !== "string") throw new TypeError("input must be a string");
  return input
    .replace(/([a-z0-9])([A-Z])/g, "$1 $2")
    .replace(/[_-]+/g, " ")
    .trim()
    .split(/\s+/)
    .filter(Boolean)
    .map((word) => word.toLowerCase());
}

export function toCamelCase(input) {
  return splitWords(input)
    .map((word, index) => (index === 0 ? word : word[0].toUpperCase() + word.slice(1)))
    .join("");
}

export function toSnakeCase(input) {
  return splitWords(input).join("_");
}

export function toKebabCase(input) {
  return splitWords(input).join("-");
}