You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript字符串转snake_case函数实现求助

实现符合要求的小写蛇形命名转换函数snake()

正确实现代码

function snake(str) {
  return str
    .trim() // 去除字符串首尾的所有空白字符(空格、制表符等)
    .replace(/[\s\t.]/g, '_') // 将空格、制表符、点号统一替换为下划线
    .replace(/_+/g, '_') // 合并连续的多个下划线为单个下划线
    .toLowerCase(); // 将所有字母转为小写
}

代码说明

  1. trim():一次性去除字符串首尾的所有空白字符(包括空格、制表符、换行符等),解决输入首尾带空白的场景。
  2. replace(/[\s\t.]/g, '_'):用正则匹配所有空格(\s)、制表符(\t)和点号(.),统一替换成下划线,覆盖需求中所有需要转换的分隔符。
  3. replace(/_+/g, '_'):匹配连续的多个下划线,替换成单个下划线,避免出现多个分隔符(比如连续空格、多个点号)导致的多下划线问题。
  4. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 23:35:21