核心答案:CSV 字段含逗号、双引号或换行时必须整体包裹双引号(内部双引号写两个);命名风格转换的通用算法是「先拆词、再重组」——camelCase 按大写拆、snake_case 按下划线拆;URL slug 规范=全小写+连字符分隔+NFKD 去重音。

CSV 与 JSON 互转规则

RFC 4180 的三条核心规则:

  1. 字段含逗号 → 整体加双引号:"北京, 朝阳区"
  2. 字段含双引号 → 双引号变两个:"他说""你好"""
  3. 字段含换行 → 整体加双引号,换行保留在引号内
CSV 原文JSON 结果
name,age + 张三,28[{"name":"张三","age":"28"}]
"北京,朝阳"一个字段「北京,朝阳」
"他说""嗨"""一个字段「他说"嗨"」

注意 CSV 所有值默认是字符串——age 的 28 是 "28",转 JSON 后要数字需自行 parse。

命名风格九种对照表

以「用户登录次数」为例:

风格写法典型场景
camelCaseuserLoginCountJS/Java 变量
PascalCaseUserLoginCount类名/组件名
snake_caseuser_login_countPython/数据库列
SCREAMING_SNAKEUSER_LOGIN_COUNT常量/环境变量
kebab-caseuser-login-countURL/CSS 类名
dot.caseuser.login.count配置文件键
flatcaseuserlogincountGo 包内私有
Title CaseUser Login Count标题
Train-CaseUser-Login-CountHTTP 头

转换算法:第一步统一拆词(camelCase 按大写边界、snake/kebab 按分隔符、空格按空白),得到词数组;第二步按目标风格规则重组(首词大小写、分隔符、各词首字母)。

URL slug 生成规范

好 slug 的四条标准:

  1. 全小写/Best-Practices/best-practices 在部分服务器是两个地址
  2. 连字符分隔:Google 官方推荐 - 而非 _(下划线会被连成一词)
  3. 去重音符号cafécafe(NFKD 规范化后去掉组合符)
  4. 去停用词:「的/了/and/the」等虚词删掉,slug 更短

中文标题两种路线:保留汉字(/文章/标题,现代浏览器与搜索引擎均支持)或转拼音/英文。用 [Slug 生成器](/c/dev/slugify) 可选保留中文模式。

实例:含逗号换行的 CSV 转换

原始 CSV:

```

name,address,note

"李四","北京市, 朝阳区","第一行

第二行"

```

转换结果:

```json

[{"name":"李四","address":"北京市, 朝阳区","note":"第一行\n第二行"}]

```

address 的逗号与 note 的换行都因外层双引号被正确保留在字段内。用 [CSV↔JSON 转换器](/c/dev/csv-json) 粘贴即转,行列数不一致会给出警告。

实例:文章标题生成 slug

标题:2024 年前端趋势:React、Vue 与 Svelte 的选择!

  1. 转小写 → 2024 年前端趋势:react、vue 与 svelte 的选择!
  2. 去标点 → 2024 年前端趋势 react vue 与 svelte 的选择
  3. 去停用词(与/的)→ 2024 年前端趋势 react vue svelte 选择
  4. 空格转连字符 → 2024-前端趋势-react-vue-svelte-选择

英文同理:“What’s New in ES2024?”whats-new-in-es2024(撇号直接删除不转连字符)。

常见误区

  • 用 split(",") 解析 CSV:遇到字段内逗号立即碎裂。CSV 必须用状态机逐字符解析(跟踪「是否在引号内」),或直接用现成解析器。
  • JSON 里写单引号/尾逗号:JSON 只认双引号,且最后一个元素后不能有逗号,注释也不合法——从 JS 对象复制过来必炸。
  • slug 里堆关键词best-cheap-top-2024-review 这种被 Google 视为垃圾信号,3-5 个实词最佳。
  • camel→snake 忘处理连续大写XMLHttpRequest 拆词应为 xml_http_request 而非 x_m_l_http_request——连续大写序列要整体识别。