推荐答案
function snakeCase(str) { return str .replace(/([A-Z])/g, '_$1') // 将大写字母前加下划线 .replace(/[\s\-]+/g, '_') // 将空格和连字符替换为下划线 .toLowerCase() // 转换为小写 .replace(/^_+|_+$/g, ''); // 去除开头和结尾的下划线 }
本题详细解读
1. 函数功能
snakeCase(str)
函数的作用是将输入的字符串转换为下划线命名(snake_case)格式。这种命名方式通常用于变量名、数据库字段名等场景。
2. 实现步骤
- 大写字母前加下划线:使用正则表达式
/([A-Z])/g
匹配所有大写字母,并在其前面加上下划线_
。 - 替换空格和连字符:使用正则表达式
/[\s\-]+/g
匹配所有空格和连字符,并将其替换为下划线_
。 - 转换为小写:使用
toLowerCase()
方法将整个字符串转换为小写。 - 去除开头和结尾的下划线:使用正则表达式
/^_+|_+$/g
去除字符串开头和结尾的多余下划线。
3. 示例
console.log(snakeCase("helloWorld")); // 输出: "hello_world" console.log(snakeCase("HelloWorld")); // 输出: "hello_world" console.log(snakeCase("hello-world")); // 输出: "hello_world" console.log(snakeCase("hello world")); // 输出: "hello_world" console.log(snakeCase(" hello world ")); // 输出: "hello_world"
4. 注意事项
- 如果输入字符串中包含多个连续的空格或连字符,它们会被替换为单个下划线。
- 如果字符串开头或结尾有下划线,它们会被去除。