如何使用数组删除字符串的一部分

时间:2013-08-28 19:21:06

标签: javascript jquery

我想删除(技术上替换)单词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有关,但这一次是数组

2 个答案:

答案 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, "");