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

React大小写转换网站:优化句子格式化JS脚本方案咨询

React大小写转换工具:格式化函数优化方案

你当前实现的去除多余空格、句号后首字母大写功能逻辑没问题,但代码可以更简洁易读,同时减少冗余操作。下面是优化后的写法及改进说明:

优化后的代码

const handleSentanceFormat = () => {
  const formattedText = text.split('\n').map(line => {
    // 统一处理行内所有多余空格,包括句号前后的空格
    const cleanedLine = line.replace(/\s+/g, ' ')
      .replace(/\s*\.\s*/g, '. ')
      .trim();
    
    // 拆分句子并逐个处理首字母大写
    return cleanedLine.split('.').map(sentence => {
      const trimmedSentence = sentence.trim();
      return trimmedSentence ? trimmedSentence.charAt(0).toUpperCase() + trimmedSentence.slice(1) : '';
    }).join('. ').replace(/\.\s*$/g, '.');
  }).join('\n');

  setText(formattedText);
};

关键改进点

  • 用数组map替代嵌套for循环:相比传统for循环,map更贴合JavaScript函数式风格,代码结构更清晰,避免手动维护索引变量
  • 整合正则表达式:
    • 用/\s+/g一次性替换所有连续空格为单个空格,替代原代码的replace(/\s{1,}/g, ' '),写法更简洁
    • 新增/\s*\.\s*/g正则,直接把句号前后的任意数量空格替换成". ",一步完成原代码中replaceAll(' .', '.')和后续拆分后的空格处理,减少重复操作
  • 简化空句子判断:用trimmedSentence ? ... : ''替代原代码的长度判断,逻辑更直观
  • 修复末尾空格问题:最后添加replace(/\.\s*$/g, '.'),确保行末尾不会出现句号后带空格的情况,完全匹配示例输出

效果验证

输入:

abcd                        abcd.         aaaa.
aa         aa              .  aaa.

输出:

Abcd abcd. Aaaa.
Aa aa. Aaa.

和原代码输出完全一致,但代码可读性和维护性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 21:32:44