我想删除(技术上替换)单词int, float, char, bool, main, void main, int main, cout, cin
到""
(如删除它),如果在字符串中找到它。
所以,如果我有ff:
str = "void main(){ couts<<"wrong"; cout<<"right"; }"
更换后,应该是:
str = "(){ (); couts<<"wrong"; <<"right"; }"
单词int,float,char,bool,main ...等存储在数组
中kWord[0] = /int/
kWord[1] = /float/
kWord[2] = /char/
kWord[3] = /bool/
kWord[4] = /main/
kWord[5] = /void\s+main/
kWord[6] = /int\s+main/
kWord[7] = /cout/
kWord[8] = /cin/
这与我之前的问题How to remove a part of the string the fastest way有关,但这一次是数组
答案 0 :(得分:1)
for(int i=0; i<kWord.length; i++) {
str = str.replace(kWord[i],"");
}
当然这也会将主机转换为帧,整数转换为eger等。它也不会触及所有出现,只是第一次出现。如果你需要避免这样的子串,你可能需要多考虑一下,并使用一个检查字边界的正则表达式
/\bfoo\b/g
答案 1 :(得分:0)
您可以执行与other question的答案相同的操作,但使用kWord.join('|')构建正则表达式对象。
kWord[0] = 'int';
kWord[1] = 'float';
kWord[2] = 'char';
kWord[3] = 'bool';
kWord[4] = 'main';
kWord[5] = 'void\\s+main';
kWord[6] = 'int\\s+main';
kWord[7] = 'cout';
kWord[8] = 'cin';
var r = '\\b(' + kWord.join('|') + ')\\b';
var myRegex = new RegExp(r, 'g');
str = str.replace(myRegex, "");