这个网站和互联网上充斥着“如何大写每个单词”的答案,但这不是我想做的。我在任何地方都找不到这个问题的答案。尽管它看起来确实像是应该得到很好回答的东西。
以前面的三个句子为例,假设我把它们写成:
这个网站和互联网上到处都是“如何大写每个单词”的答案,但这不是我想做的。而且我在任何地方都找不到这个问题的答案。尽管它看起来确实像是应该得到很好回答的东西。
我想一个JS函数,将大写的三个粗体字。考虑到句子可以结束后:“.”"?“或”!“。
我正在使用Vue这个项目,所以使用Vue的东西会很好,但香草JS也会很好。
3条答案
按热度按时间6tdlim6h1#
由于可能有多个分隔符需要保留,所以
split
不是一个选项。另一个简单的方法是使用全局替换来处理每个句子,其中一个句子以标点符号结尾,后面跟着一个空格,标点符号在字符串的结尾是可选的:pbpqsu0x2#
最简单但也是最可靠的方法是将
replace
与类似/(?:^|[.!?]\s+)\w/g
的regular expression及其toUpperCase
艾德匹配一起使用。提供的模式...
/ (?:^|[.!?]\s+)\w /g
...如下所示...(?:^|[.!?]\s+)
...以非捕获方式匹配组( ... )
(?: ... )
^|[.!?]\s+
...有两个匹配的备选项...|
(或)...^
[.!?]
...,后跟至少一个空格...\s+
...字符(其中,\s
的等效字符是[\r\n\t\f\v \u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]
)。\w
...与单个单词字符完全匹配(其中,\w
的对等项为[a-zA-Z0-9_]
)。g
全局修饰符标志,匹配所有内容。第一个
p1tboqfb3#
您可以尝试使用
regex
模式/([!.]\s+)([a-z])/g
。匹配将被传递以替换回调函数,以仅传递到第二捕获组
([a-z])
的上部。图案:
([!.]\s+)-正在捕获
!
与.
([a-z])-捕获小写字母。