jQuery转换句子大小写

3

我有一些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保持小写呢?

1个回答

1
你的表达式不起作用的原因是单词边界, \b,它是(^\w|\w$|\W\w|\w\W)的缩写,不包括'字符,这意味着在'后面的字符被选择,在你的情况下是t
你可以用(^|\s)替换\b,这将是/(^|\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"

谢谢,这正是我所需要的! - Jordan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接