jQuery转换句子案例

时间:2017-02-02 19:26:07

标签: javascript jquery

我有一些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

如何在撇号保持小写后进行尾随?

1 个答案:

答案 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();
  });
});