用大写单词替换字符串函数

时间:2016-11-18 15:07:12

标签: javascript

我需要解释我在Stack Overflow上收到的以下代码。

function sentenceCase(input, lowercaseBefore) {
    input = ( input === undefined || input === null ) ? '' : input;
    if (lowercaseBefore) { 
      input = input.toLowerCase(); 
    }
    return input.toString().replace( /(^|\. *)([a-z])/g,
    function(match, separator, char) {
        return separator + char.toUpperCase();
    });
}

var str = 'this is a text. hello world!';
str = sentenceCase(str);
document.write(str); 

代码将使字符串在每个点(。)符号后大写。有人可以解释替换功能的工作原理:

return input.toString().replace( /(^|\. *)([a-z])/g,
function(match, separator, char) {
    return separator + char.toUpperCase();
});
  

更新

替换功能上separatorchar的内容是什么?

1 个答案:

答案 0 :(得分:1)

input = ( input === undefined || input === null ) ? '' : input;

检查输入是空还是空

return input.toString().replace( /(^|\. *)([a-z])/g,
function(match, separator, char) {
    return separator + char.toUpperCase();
});

这使用正则表达式来匹配点后跟小写字符的所有情况,最值得注意的是

/(^|\. *)([a-z])/g

首先看一下。然后在它之后查找a-z之间的任何字符。请注意,如果他们完成[a-z] [A-Z],该功能将无效。

function(match, separator, char) {
    return separator + char.toUpperCase();
}

一个简单的lambda,只返回函数输入的大写字母。

更新

分隔符在这种情况下是点,虽然它可以是与正则表达式函数匹配的任何分隔符,而char是找到分隔符后的下一个字符。