我需要对我在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();
});
更新
是什么内容separator
,并char
在替换功能?
input = ( input === undefined || input === null ) ? '' : input;
检查输入是否为空或空
return input.toString().replace( /(^|\. *)([a-z])/g,
function(match, separator, char) {
return separator + char.toUpperCase();
});
这使用正则表达式来匹配所有在点后跟小写字符的情况,最明显的是
/(^|\. *)([a-z])/g
首先看。然后在z之后寻找z之间的任何字符。请注意,如果他们完成了[az] [AZ],该功能将无法正常工作。
function(match, separator, char) {
return separator + char.toUpperCase();
}
一个简单的lambda,对于函数输入,它仅将a返回为大写。
更新:
尽管在分隔符中可以是与regex函数匹配的任何定界符,但在这种情况下,分隔符是点,并且char是找到分隔符之后的下一个char。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句