问题描述
function correctSentences(str){
s = str.replace(/([A-Z])/g,'. $1').trim();
return s;
}
correctSentences(" avi loves pizza Dani loves cola ");
输出为:
"avi loves pizza . Dani loves cola"
如何去掉点前的空格? 谢谢!
解决方法
在正则表达式中添加 \s
function correctSentences(str){
s = str.replace(/(\s[A-Z])/g,'.$1').trim();
return s;
}
console.log(correctSentences(" avi loves pizza Dani loves cola "));
我会使用这个版本:
function correctSentences(str) {
return str.replace(/\s+(?=[A-Z])/g,'. ').trim();
}
var input = " avi loves pizza Dani loves cola ";
var output = correctSentences(input);
console.log(input + "\n" + output);
这里的正则表达式逻辑表示:
\s+ match one or more whitespace characters
(?=[A-Z]) then assert (but do not consume) that what follows is a capital letter
我们用点代替,结束上一句,后跟两个空格,与下一句开头分开。
,我提议:
function correctSentences(str){
return str.replace(/(?=\b\s+[A-Z])/g,'.').trim();
}
const result = correctSentences(" avi loves pizza. Bob loves pizza Dani loves cola ");
console.log(result);
如果已经存在 .
,它还会阻止添加额外的 .
。