āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā ā š shadcn/directory/brennenrocks/utilcn/strings/to-snake-case ā āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā
import { toSnakeCase } from '@/lib/to-snake-case';
const result = toSnakeCase("Hello World");
console.log(result); // "hello_world"
| Parameter | Type | Description |
|-----------|----------|------------------|
| str | string | The input string |
string - The snake_cased string.
toSnakeCase("Hello World"); // "hello_world"
toSnakeCase("XMLHttpRequest"); // "xml_http_request"
toSnakeCase("user-name"); // "user_name"
toSnakeCase("APIResponse"); // "api_response"
toSnakeCase("HTML Parser"); // "html_parser"
export function toSnakeCase(str: string): string {
return (
str
// Split acronym groups (e.g. "XMLHttp" -> "XML_Http")
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')
// Split between a lowercase/digit and an uppercase (e.g. "testHTTP" -> "test_HTTP")
.replace(/([a-z\d])([A-Z])/g, '$1_$2')
// Replace spaces and dashes with underscores
.replace(/[\s-]+/g, '_')
.toLowerCase()
// Remove leading and trailing underscores
.replace(/^_+|_+$/g, '')
);
}
ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā