下面我sentance
有desiredResult
和sentance
。使用下面的pattern
,我可以抓住需要更改为t T
的{{1}},但我不知道该往哪里去。
t, t
如果前面的字母是小写的话,我想通过在“I”之外的大写之前添加逗号和空格来得到正确的句子。
答案 0 :(得分:3)
在句子上使用.replace()
并将替换函数作为第二个参数传递
var corrected = sentence.replace(
/([a-z])\s([A-Z])/g,
function(m,s1,s2){ //arguments: whole match (t T), subgroup1 (t), subgroup2 (T)
return s1+', '+s2.toLowerCase();
}
);
至于保留大写I
,有很多方法,其中之一:
var corrected = sentence.replace(
/([a-z])\s([A-Z])(.)/g,
function(m,s1,s2,s3){
return s1+((s2=='I' && /[^a-z]/i.test(s3))?(' '+s2):(', '+s2.toLowerCase()))+s3;
}
);
但是有更多的情况会失败,例如:His name is Joe.
,WTF is an acronym for What a Terrible Failure.
和其他许多。