我有一些JavaScript在某些文本上运行转换案例:
$(".container").click(function(){
text = text.toLowerCase().replace(/\b[a-z]/g, function(block){
return block.toUpperCase();
});
将容器div中的给定文本返回给Sentence Case。但是当在文本中使用撇号时,例如
can't get this to work
它返回
Can'T Get This To Work
如何在撇号保持小写后进行尾随?
答案 0 :(得分:1)
表达式不起作用的原因是因为word boundary, \b
是(^\w|\w$|\W\w|\w\W)
的缩写,并且不包含'
个字符,这意味着{{1}之后的字符在你的情况下,它是'
,正在被选中。
您可以将t
替换为\b
,(^|\s)
,这将适用于您的情况:
/(^|\s)[a-z]/g
但是,最好的方法是使用正则表达式$(".container").click(function() {
text = text.toLowerCase().replace(/(^|\s)[a-z]/g, function(block) {
return block.toUpperCase();
});
});
,它将选择任何单词字符(即\w\S*
),后跟任何非字符串字符(即[a-zA-Z0-9_]
)。
这将允许您选择每个单词子串。从那里你可以大写第一个字符并将剩余的字符转换为小写:
[^\r\n\t\f ]
例如,以下代码段将返回:
$(".container").click(function() {
text = text.replace(/\w\S*/g, function(word) {
return word.charAt(0).toUpperCase() + word.substr(1).toLowerCase();
});
});