/** * Splits a string into words based on common delimiters, camelCase, PascalCase, and special characters. */ export function splitWords(input: string): string[] { if (!input.trim()) return []; return input .replace(/([a-z0-9])([A-Z])/g, '$1 $2') // Split camelCase and PascalCase .replace(/[_.\\\-]/g, ' ') // Replace delimiters (underscore, dot, backslash, hyphen) with spaces .replace(/[^a-zA-Z0-9\s]/g, ' ') // Remove all special characters and replace them with spaces .replace(/\s+/g, ' ') // Normalize multiple spaces to one .trim() .split(' ') .filter(Boolean); } /** Converts to camelCase */ export function toCamelCase(input: string): string { const words = splitWords(input); if (words.length === 0) return ''; return ( words[0].toLowerCase() + words .slice(1) .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()) .join('') ); } /** Converts to PascalCase */ export function toPascalCase(input: string): string { const words = splitWords(input); if (words.length === 0) return ''; return words .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()) .join(''); } /** Converts to snake_case */ export function toSnakeCase(input: string): string { const words = splitWords(input); if (words.length === 0) return ''; return words.map(word => word.toLowerCase()).join('_'); } /** Converts to SCREAMING_SNAKE_CASE */ export function toScreamingSnakeCase(input: string): string { const words = splitWords(input); if (words.length === 0) return ''; return words.map(word => word.toUpperCase()).join('_'); } /** Converts to kebab-case */ export function toKebabCase(input: string): string { const words = splitWords(input); if (words.length === 0) return ''; return words.map(word => word.toLowerCase()).join('-'); } /** Converts to Train-Case */ export function toTrainCase(input: string): string { const words = splitWords(input); if (words.length === 0) return ''; return words .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()) .join('-'); } /** Converts to dot.case */ export function toDotCase(input: string): string { const words = splitWords(input); if (words.length === 0) return ''; return words.map(word => word.toLowerCase()).join('.'); } /** Converts to backslash\\case */ export function toBackslashCase(input: string): string { const words = splitWords(input); if (words.length === 0) return ''; return words.map(word => word.toLowerCase()).join('\\'); } /** Converts to Hungarian Notation (e.g., strMyVariableName) */ export function toHungarianNotation(input: string, prefix: string = 'str'): string { return prefix + toPascalCase(input); }