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

修复Sentence Case工具:实现所有句子首字母大写功能

修复Sentence Case功能:让每个句子首字母大写

问题根源

当前sentenceCase函数仅将整个字符串的第一个字符转为大写,未识别句子结束符(如./?/!)后的新句子,导致只有第一句首字母大写。

修复方案

替换原有的sentenceCase函数为以下实现:

function sentenceCase(str) {
  // 先统一转为小写,处理单独的"i"为大写
  let processedStr = str.toLowerCase().replace(/\si\s/g, ' I ');
  // 匹配句子开头的字符并转为大写
  processedStr = processedStr.replace(/(^\w|[.!?]\s*\w)/g, match => match.toUpperCase());
  return processedStr;
}

代码说明

  • str.toLowerCase():将所有字符转为小写,统一基础格式
  • replace(/\si\s/g, ' I '):保留单独的"i"为大写(如"i am"转为"I am")
  • replace(/(^\w|[.!?]\s*\w)/g, ...):正则匹配两种位置的字符并转为大写:
    • ^\w:字符串的第一个单词首字符
    • [.!?]\s*\w:句子结束符(.?!)后(可跟任意数量空格)的第一个单词首字符

修改后的完整JavaScript代码

// LowerCase, Title And Sentence Case Converter Tool

var stringbox = document.getElementById('stringbox')
var wordcountspan = document.getElementById('wordcount')
var charcountspan = document.getElementById('charcount')

function convertstring(textarea, action) {
  if (action == 'sentencecase') {
    textarea.value = sentenceCase(textarea.value)
  } else if (action == 'titlecase') {
    textarea.value = toTitleCase(textarea.value)
  } else if (action == 'capitalcase') {
    textarea.value = CapitalCase(textarea.value)
  } else if (action == 'lowercase') {
    textarea.value = lowerCase(textarea.value)
  } else if (action == 'uppercase') {
    textarea.value = upperCase(textarea.value)
  }
  return false
}

function sentenceCase(str) {
  let processedStr = str.toLowerCase().replace(/\si\s/g, ' I ');
  processedStr = processedStr.replace(/(^\w|[.!?]\s*\w)/g, match => match.toUpperCase());
  return processedStr;
}

//reference: https://github.com/gouch/to-title-case
function toTitleCase(str) {
  var smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\.?|via)$/i;
  var str = str.toLowerCase()
  return str.replace(/[A-Za-z0-9\u00C0-\u00FF]+[^\s-]*/g, function(match, index, title) {
    if (index > 0 && index + match.length !== title.length &&
      match.search(smallWords) > -1 && title.charAt(index - 2) !== ":" &&
      (title.charAt(index + match.length) !== '-' || title.charAt(index - 1) === '-') &&
      title.charAt(index - 1).search(/[^\s-]/) < 0) {
      return match.toLowerCase();
    }

    if (match.substr(1).search(/[A-Z]|\../) > -1) {
      return match;
    }

    return match.charAt(0).toUpperCase() + match.substr(1);
  });
};

//reference: https://medium.freecodecamp.com/three-ways-to-title-case-a-sentence-in-javascript-676a9175eb27
function CapitalCase(str) {
  return str.toLowerCase().split(' ').map(function(word) {
    return (word.charAt(0).toUpperCase() + word.slice(1));
  }).join(' ');
}

function lowerCase(str) {
  return str.toLowerCase();
}

function upperCase(str) {
  return str.toUpperCase();
}

function wordandcharcount() {
  wordcountspan.innerHTML = stringbox.value.split(' ').length
  charcountspan.innerHTML = stringbox.value.length
}


stringbox.addEventListener('input', function() {
  wordandcharcount()
}, false)

wordandcharcount()

HTML代码(无需修改)

<textarea id="stringbox"></textarea>
<span id="wordcount"></span>
<span id="charcount"></span>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:36:22