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

如何用for/while循环不使用正则实现JS点分隔句子首单词全大写

调整思路

  • 新增一个标记变量isNextWordSentenceStart,用来判断当前遍历到的单词是不是句子的第一个单词,初始值设为true,因为文本第一个单词必然是第一个句子的开头。
  • 遍历拆分后的单词数组时:
    • 如果当前是句子开头的单词,直接将整个单词转为全大写,然后将标记设为false
    • 如果不是句子开头的单词,保留原样即可
    • 每次遍历完当前单词后,判断该单词是否以英文句号.结尾,如果是,就把标记重新设为true,说明下一个单词是新句子的开头
  • 最后把处理后的数组拼接回字符串即可

调整后的完整代码

<p id="tekst">This is an. Example text. To showcase. What i want</p>

<script>
function highlight() {
  var text = document.getElementById("tekst").innerHTML;
  let arr = text.split(" ");
  // 标记下一个单词是否为句子开头
  let isNextWordSentenceStart = true;

  for (var i = 0; i < arr.length; i++) {
    if (isNextWordSentenceStart) {
      // 句子开头单词全大写
      arr[i] = arr[i].toUpperCase();
      isNextWordSentenceStart = false;
    }
    // 检查当前单词是否以句号结尾,是则下一个是句子开头
    if (arr[i].endsWith('.')) {
      isNextWordSentenceStart = true;
    }
  }

  const str2 = arr.join(" ");
  console.log(str2);
}

// 调用测试
highlight();
</script>

运行效果验证

输入测试文本处理后输出结果为:

THIS is an. EXAMPLE text. TO showcase. WHAT i want

和你预期的结果完全一致,且全程只使用了for循环,没有用到正则表达式,符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:24:00