基本上,我需要能够在字符串中找到某些单词(通过'word',我的意思是字符集)(不区分大小写),如果它们匹配,我需要插入一个在该特定字符集的第一个字母后面的符号。我不能使用搜索替换,因为这不会保留这种情况。
示例:
布朗布朗尼在烤箱里。
如果我要找的单词是brown
,而我要插入的字符是*
,则结果应为:
B * rown b * rownies在烤箱里。
JS 中最好的方法是什么?
答案 0 :(得分:7)
带有选项'ig'的正则表达式可以解决问题。
"Brown brownies are in an oven.".replace(/(b)(rown)/gi, "$1*$2")
答案 1 :(得分:1)
您可以使用正则表达式,例如:
var re = /(B)(rown)/gi;
console.log("Brown brownies are in an oven".replace(re, "$1*$2"));
答案 2 :(得分:1)
var str = 'Brown brownies are in an oven.'
var s = 'brown';
var r = '*';
var re = new RegExp('('+s.substr(0,1)+')('+s.substr(1)+')','ig');
log(str.replace(re, '$1'+r+'$2'));
但您需要观看s
以查找对正则表达式具有某些特殊含义的字符(https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/regexp),并且还需要注意设置r
。如果s
的长度小于2,也会失败。
答案 3 :(得分:1)
function astAfterFirstLetter(words) {
var re = new RegExp("\\b(?=" + words.join("|") + "\\b)(\\w)(\\w*)", "gi");
return function (str) { return str.replace(re, "$1*$2"); };
}
astAfterFirstLetter(["brown", "cow"])("How now brown cow!")
产生
How now b*rown c*ow!