mirror of
https://github.com/zrwusa/data-structure-typed.git
synced 2024-11-23 12:54:04 +00:00
55 lines
1.9 KiB
TypeScript
55 lines
1.9 KiB
TypeScript
/**
|
|
* Convert any string to CamelCase format
|
|
*/
|
|
export function toCamelCase(str: string): string {
|
|
return str
|
|
.toLowerCase()
|
|
.replace(/[^a-zA-Z0-9]+(.)/g, (_, chr) => chr.toUpperCase());
|
|
}
|
|
|
|
/**
|
|
* Convert any string to SnakeCase format
|
|
*/
|
|
export function toSnakeCase(str: string): string {
|
|
return str
|
|
.replace(/([a-z])([A-Z])/g, '$1_$2') // Add underline between lowercase and uppercase letters
|
|
.toLowerCase() // Convert to lowercase
|
|
.replace(/[^a-z0-9]+/g, '_'); // Replace non-alphanumeric characters with underscores
|
|
}
|
|
|
|
/**
|
|
* Convert any string to PascalCase format (first letter capitalized)
|
|
*/
|
|
export function toPascalCase(str: string): string {
|
|
return str
|
|
.replace(/([a-z])([A-Z])/g, '$1 $2') // Add space between lowercase and uppercase letters
|
|
.replace(/[^a-zA-Z0-9]+/g, ' ') // Replace non-alphanumeric characters with spaces
|
|
.split(' ') // Separate strings by spaces
|
|
.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()) // The first letter is capitalized, the rest are lowercase
|
|
.join(''); // Combine into a string
|
|
}
|
|
|
|
/**
|
|
* Convert CamelCase or SnakeCase string to string format with specified separator
|
|
*/
|
|
export function toSeparatedCase(str: string, separator: string = '_'): string {
|
|
return str
|
|
.replace(/([a-z0-9])([A-Z])/g, '$1' + separator + '$2')
|
|
.replace(/[_\s]+/g, separator)
|
|
.toLowerCase();
|
|
}
|
|
|
|
/**
|
|
* Convert the string to all uppercase and delimit it using the specified delimiter
|
|
*/
|
|
export function toUpperSeparatedCase(
|
|
str: string,
|
|
separator: string = '_',
|
|
): string {
|
|
return str
|
|
.toUpperCase() // Convert all letters to uppercase
|
|
.replace(/([a-z0-9])([A-Z])/g, '$1' + separator + '$2') // Add separator between lowercase letters and uppercase letters
|
|
.replace(/[^A-Z0-9]+/g, separator) // Replace non-alphanumeric characters with separators
|
|
.replace(new RegExp(`^${separator}|${separator}$`, 'g'), ''); // Remove the starting and ending separators
|
|
}
|