JavaScript字符串转snake_case函数实现求助
实现符合要求的小写蛇形命名转换函数
snake() 正确实现代码
function snake(str) { return str .trim() // 去除字符串首尾的所有空白字符(空格、制表符等) .replace(/[\s\t.]/g, '_') // 将空格、制表符、点号统一替换为下划线 .replace(/_+/g, '_') // 合并连续的多个下划线为单个下划线 .toLowerCase(); // 将所有字母转为小写 }
代码说明
trim():一次性去除字符串首尾的所有空白字符(包括空格、制表符、换行符等),解决输入首尾带空白的场景。replace(/[\s\t.]/g, '_'):用正则匹配所有空格(\s)、制表符(\t)和点号(.),统一替换成下划线,覆盖需求中所有需要转换的分隔符。replace(/_+/g, '_'):匹配连续的多个下划线,替换成单个下划线,避免出现多个分隔符(比如连续空格、多个点号)导致的多下划线问题。toLowerCase():将所有字母转为小写,满足最终输出全小写的要求。
原有代码的问题分析
你之前的实现存在几个核心问题:
- 没有处理首尾空白,导致输入带首尾空格时输出会多出首尾下划线;
- 未覆盖制表符和点号的转换需求,这类分隔符不会被替换;
- 连续空格会被拆分成多个空字符串,
join("_")后会生成多个连续下划线,不符合要求。
测试验证
用你的测试用例验证:
snake('abc')→'abc'✔️snake(' ABC ')→'abc'✔️snake('ABC')→'abc'✔️snake('A BC')→'a_bc'✔️snake(' A bC ')→'a_bc'✔️snake('A BC')→'a_bc'✔️snake('A.BC')→'a_bc'✔️snake(' A.. B C ')→'a_b_c'✔️
内容的提问来源于stack exchange,提问作者NewfieDeveloper
相关产品推荐
相关产品推荐

