0

如果在字符串中找到单词,我想将其替换int, float, char, bool, main, cin, cout, if, else, else if, for, while, clrscr, getch, do, void""(例如删除)。

所以如果我有ff:

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

更换后应该是:

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

到目前为止,我尝试过的是(当然是错误的):

str = str.replace(/\s+(?:int|char|bool|main|float)/, "");//summarized
4

2 回答 2

1

您需要g修饰符来对字符串执行多次替换。您应该在正则\b表达式的两端使用正则表达式来匹配单词边界。所以应该是:

str = str.replace(/\b(int|char|bool|main|float|...)\b/g, "");
于 2013-08-28T18:38:50.237 回答
0

使用单词边界\b以及全局标志g

'main(){  clrscr(); couts<<"wrong"; cout<<"right";  }'.replace(/\b(?:int|float|char|bool|main|cin|cout|if|else|else if|for|while|clrscr|getch|do|void)\b/g, '');

在您的正则表达式中,\s+将阻止匹配字符串开头的单词,因为您使用了+重复运算符,这意味着至少一个. 你总是可以替换\s+by (\s+|^),但你仍然会遇到一个问题:空格将成为匹配的一部分,它们也会被替换。因此,\b匹配单词边界的匹配更好。

于 2013-08-28T18:41:10.710 回答