Skip to main content
Module

x/case/normalCase.ts

Convert strings between camelCase, PascalCase, Title Case, snake_case and more
Latest
File
import lowerCase from "./lowerCase.ts";
import nonWordRegexp from "./vendor/nonWordRegexp.ts";import camelCaseRegexp from "./vendor/camelCaseRegexp.ts";import camelCaseUpperRegexp from "./vendor/camelCaseUpperRegexp.ts";
/** * Convert a `string` to normal case. * * Example: * * ```ts * normalCase("test string"); * //=> "test string" * * normalCase("testString"); * //=> "test string" * * normalCase("Test-String"); * //=> "test string" * ``` */export default function normalCase( str: string, locale?: string, replacement?: string,): string { if (str == null) { return ""; }
replacement = typeof replacement !== "string" ? " " : replacement;
function replace(match: string, index: number, value: string): string { if (index === 0 || index === value.length - match.length) { return ""; }
return replacement!; }
str = String(str) // Support camel case ("camelCase" -> "camel Case"). .replace(camelCaseRegexp, "$1 $2") // Support odd camel case ("CAMELCase" -> "CAMEL Case"). .replace(camelCaseUpperRegexp, "$1 $2") // Remove all non-word characters and replace with a single space. .replace(nonWordRegexp, replace);
// Lower case the entire string. return lowerCase(str, locale);}