如何以最快的方式删除字符串的一部分

时间:2013-08-28 18:32:52

标签: javascript jquery

如果在字符串中找到,我想将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

2 个答案:

答案 0 :(得分:1)

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

str = str.replace(/\b(int|char|bool|main|float|...)\b/g, "");

答案 1 :(得分: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+替换为(\s+|^),但您仍会遇到一个问题:空格将成为匹配的一部分,它们也会被替换。因此,匹配字边界的\b可以更好地为您服务。