0

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/

这与我之前的问题有关如何以最快的方式删除部分字符串,但这次单词在数组中

4

2 回答 2

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

当然,这也会将大型机转换为框架,将整数转换为 eger 等。它也不会出现所有情况,只是第一次。如果您需要避免使用这样的子字符串,您可能需要多考虑一下,并使用检查单词边界的正则表达式

/\bfoo\b/g
于 2013-08-28T19:25:55.367 回答
0

您可以执行与其他问题的答案相同的操作,但使用 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, "");
于 2013-08-28T19:55:14.460 回答