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

Javascript 如何使用数组删除字符串的一部分,javascript,jquery,Javascript,Jquery,如果在字符串中找到单词int、float、char、bool、main、void main、int main、cout、cin,我想将其删除(从技术上替换)到“”(如删除) 因此,如果我有ff: str = "void main(){ couts<<"wrong"; cout<<"right"; }" 这与我的上一个问题有关,但这次单词位于数组中,您可以执行与问题答案中相同的操作,但使用kWord.join(“|”)构建正则表达式对象 for(int i=0; i&

如果在字符串中找到单词
int、float、char、bool、main、void main、int main、cout、cin,我想将其删除(从技术上替换)到
“”
(如删除)

因此,如果我有ff:

str = "void main(){  couts<<"wrong"; cout<<"right";  }"

这与我的上一个问题有关,但这次单词位于数组中,您可以执行与问题答案中相同的操作,但使用kWord.join(“|”)构建正则表达式对象

for(int i=0; i<kWord.length; i++) {
  str = str.replace(kWord[i],"");
}

我不确定这里缺少了什么,但似乎可以在数组中循环,对数组中的每个索引的字符串执行
.replace()
。或者只创建一个包含所有单词的正则表达式。如果数组包含字符串,则可以使用
var re=new RegExp('\b('+kWord.join('|')+'\b'))将其转换为单个正则表达式。但如果它们已经是regexp,您可以循环使用它们。但是他们需要在末尾使用
\b
g
修饰符。帮助:kWord[9]=/!字符串!/没有被替换。这不会修改原始的
str
,也不会解决
g
标志问题。当某些替换显然需要时,说“你根本不需要正则表达式。你可以只放原始字符串”是无效的。@naomik说得好,没有仔细查看单词列表。更好?@fireflieslive使用
[el1,el2,el3,…]
数组符号,而不是
kWord=[];wWord[0]=el1。此外,如果您计划经常执行替换,请确保不要一直重新创建一个新的
RegExp
对象。@fireflieslive,一切正常,但如果数组的内容不是动态的,则确实没有理由使用推送。@plax:它将是动态的,我刚刚给出了常量面Ü@tap:我有一个kWord[9]=!字符串“。。为什么它不想被替换?我个人认为这是一个令人讨厌的字符串和正则表达式的交叉。
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/
for(int i=0; i<kWord.length; i++) {
  str = str.replace(kWord[i],"");
}
/\bfoo\b/g
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, "");