如何实现每个句子首单词首字母大写?现有代码仅段落首词大写
实现每个句子首单词首字母大写的解决方案
嘿,我明白你的需求啦!你现在的代码只能把整个文本的第一个单词首字母大写,要实现句号、感叹号之后的句子首单词也自动大写,我们可以借助正则表达式精准匹配句子的开头位置,再替换成大写字母。
修改后的完整代码
HTML部分
<textarea autocomplete="off" cols="30" id="TextInput" name="message" oninput="myFunction()" rows="10" style="width: 100%"></textarea> <br><br> <input id="FistWordFirstCharcterCapital" onclick="FistWordFirstCharcterCapital()" style="color: black;" type="button" value="First word first character capital of each sentence!" />
JavaScript部分
function FistWordFirstCharcterCapital() { // 先统一转小写,避免原文本大小写混乱影响处理 let string = document.getElementById("TextInput").value.toLowerCase(); // 正则匹配两种句子开头:文本起始位置,或.!后跟空格的位置,捕获后面的小写字母 let formattedString = string.replace(/(^|[.!]\s+)([a-z])/g, (match, prefix, char) => { return prefix + char.toUpperCase(); }); document.getElementById("TextInput").value = formattedString; }
代码逻辑说明
- 正则表达式
/(^|[.!]\s+)([a-z])/g:^匹配整个文本的起始位置[.!]\s+匹配句号/感叹号,以及后面跟着的一个或多个空格([a-z])捕获这些位置后的小写字母,用于后续替换
- 替换函数会把捕获到的小写字母转成大写,再和前面的前缀(比如
!)拼接回去,确保每个句子的首单词首字母都能正确大写。
效果演示
输入内容:
hello I haven't seen you for awhile! how are you!
hello I haven't seen you for awhile. how are you.
处理后会变成:
Hello I haven't seen you for awhile! How are you!
Hello I haven't seen you for awhile. How are you.
内容的提问来源于stack exchange,提问作者santosh
相关产品推荐
相关产品推荐

