Skip to content

caseConverter

统一的大小写转换函数,支持多种命名格式之间的相互转换。

函数签名

typescript
function caseConverter(
  str: string,
  options?: CaseOptions,
  returnDetails?: boolean
): string | CaseResult

type CaseType = 'camel' | 'pascal' | 'kebab' | 'snake' | 'constant' | 'dot' | 'path' | 'sentence' | 'title'

interface CaseOptions {
  targetCase?: CaseType                      // 目标格式,默认 'camel'
  preserveConsecutiveUppercase?: boolean     // 保留连续大写字母,默认 false
}

interface CaseResult {
  original: string
  camelCase: string
  pascalCase: string
  kebabCase: string
  snakeCase: string
  constantCase: string
  dotCase: string
  pathCase: string
  sentenceCase: string
  titleCase: string
  detectedCase: CaseType | 'mixed'
}

参数

参数名类型必填默认值说明
strstring-需要转换的字符串
options.targetCaseCaseType'camel'目标命名格式
options.preserveConsecutiveUppercasebooleanfalse是否保留连续大写字母(如 HTMLParser)
returnDetailsbooleanfalse是否返回所有格式的详细结果

返回值

类型说明
stringreturnDetailsfalse 时,返回转换后的字符串
CaseResultreturnDetailstrue 时,返回包含所有格式的对象

工作原理

  1. 检测输入字符串的命名格式(camel/pascal/kebab/snake 等)
  2. 根据分隔符和大小写模式将字符串分割为单词数组
    • 处理连字符、下划线、点、斜杠、空格等分隔符
    • 识别驼峰命名的单词边界
    • 根据 preserveConsecutiveUppercase 选项处理连续大写字母
  3. 将单词数组转换为目标格式:
    • camel: 第一个单词小写,其余单词首字母大写
    • pascal: 所有单词首字母大写
    • kebab: 所有单词小写,用 - 连接
    • snake: 所有单词小写,用 _ 连接
    • constant: 所有单词大写,用 _ 连接
    • dot: 所有单词小写,用 . 连接
    • path: 所有单词小写,用 / 连接
    • sentence: 第一个单词首字母大写,其余小写,用空格连接
    • title: 所有单词首字母大写,用空格连接
  4. 根据 returnDetails 返回单个格式字符串或所有格式的对象