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

JavaScript字符串标题大小写优化求助:非首词介词小写方案改进

优化标题大小写转换函数的方案

原问题需实现符合标题大小写规则的字符串转换(如输入internet of things需输出Internet of Things),原方案仅硬编码判断of,扩展性差且鲁棒性不足,以下是几个改进方向:

1. 维护可扩展的小写词列表

把需要保留小写的介词、冠词、连词等放到集合中,方便后续添加或修改,避免硬编码单个单词:

// 可按需扩展的小写词集合(比如添加 "the", "and", "in" 等)
const lowercaseWords = new Set(['of', 'the', 'and', 'in', 'on', 'for']);

const cleanValue = (value) => {
  if (!value) return ''; // 处理空输入
  return value
    .replace(/-/g, ' ')
    .split(' ')
    .filter(word => word) // 过滤空字符串(处理连续空格/连字符的情况)
    .map((word, index) => {
      const lowerWord = word.toLowerCase();
      // 首词必须大写,非首词若在小写列表则保留小写,否则首字母大写
      if (index === 0) {
        return lowerWord.charAt(0).toUpperCase() + lowerWord.slice(1);
      }
      return lowercaseWords.has(lowerWord) 
        ? lowerWord 
        : lowerWord.charAt(0).toUpperCase() + lowerWord.slice(1);
    })
    .join(' ');
};

2. 增强鲁棒性处理

  • 增加空值判断,避免word[0]触发报错
  • 过滤拆分后产生的空字符串(比如输入internet--of things,替换连字符后会出现空单词)
  • 统一先转小写再处理,避免原单词全大写导致的异常(如输入INTERNET OF THINGS也能正确输出Internet of Things)

3. 可选:支持自定义规则

如果后续需要适配不同的标题大小写规则(比如某些场景要求所有介词都大写),可以把小写列表作为参数传入函数,提升灵活性:

const cleanValue = (value, lowercaseWords = new Set(['of', 'the', 'and'])) => {
  if (!value) return '';
  return value
    .replace(/-/g, ' ')
    .split(' ')
    .filter(word => word)
    .map((word, index) => {
      const lowerWord = word.toLowerCase();
      return index === 0 
        ? lowerWord.charAt(0).toUpperCase() + lowerWord.slice(1)
        : lowercaseWords.has(lowerWord) 
          ? lowerWord 
          : lowerWord.charAt(0).toUpperCase() + lowerWord.slice(1);
    })
    .join(' ');
};

// 使用示例:自定义小写词列表
cleanValue("the internet of things", new Set(['of'])); // 输出 "The Internet of Things"

内容的提问来源于stack exchange,提问作者ypdev19

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:51:56