Javascript jQuery转换句子大小写

Javascript jQuery转换句子大小写,javascript,jquery,Javascript,Jquery,我有一些JavaScript在一些文本上运行转换案例: $(".container").click(function(){ text = text.toLowerCase().replace(/\b[a-z]/g, function(block){ return block.toUpperCase(); }); 它将容器div中的给定文本返回到句子大小写。但是,当文本中使用撇号时,例如 can't get this to work 它回来了 Can'T Get This To Wor

我有一些JavaScript在一些文本上运行转换案例:

$(".container").click(function(){
  text = text.toLowerCase().replace(/\b[a-z]/g, function(block){
  return block.toUpperCase();
});
它将容器div中的给定文本返回到句子大小写。但是,当文本中使用撇号时,例如

can't get this to work
它回来了

Can'T Get This To Work

如何使撇号后面的尾随t保持小写?

表达式不起作用的原因是,a是
的缩写(^\w |\w$|\w\w |\w\w)
,而这不包括
'
字符,这意味着
'
后面的字符,在您的例子中是
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();
  });
});
例如,以下代码段将返回:

"can't get this to work".replace(/\w\S*/g, function(word) {
  return word.charAt(0).toUpperCase() + word.substr(1).toLowerCase();
});

// > "Can't Get This To Work"

谢谢,这正是我需要的!