目标
使用您选择的编程语言,编写最短的程序以消除代表C程序的字符串中的注释。
输入项
字符串可以视为任何形式的输入,但也可以视为变量。
使用说明
两种不同的注释将被删除:
- 多行注释,以开头
/*
和结尾*/
- 单行注释,
//
以Linux样式的换行符(LF,\n
)开始和结束
字符串中的注释不可删除。出于此挑战的目的,您只需要考虑- "
分隔的字符串。特别是,您可以忽略使用- '
分隔字符文字的可能性。您也可以忽略三边形和连字号(/\<LF>*...
)。
例子
输入:
#include <stdio.h>
int main(int argc, char** argv)
{
// this comment will be removed
if (argc > 1) {
printf("Too many arguments.\n"); // this too will be removed
return 1;
}
printf("Please vist http://this.will.not.be.removed.com\n");
printf("/* This will stay */\n");
printf("\"/* This will stay too */\"\n");
printf("//and so will this\\");
// but not this
printf("just \"ano//ther\" test.");
return 0;
}
输出:
#include <stdio.h>
int main(int argc, char** argv)
{
if (argc > 1) {
printf("Too many arguments.\n");
return 1;
}
printf("Please vist http://this.will.not.be.removed.com\n");
printf("/* This will stay */\n");
printf("\"/* This will stay too */\"\n");
printf("//and so will this\\");
printf("just \"ano//ther\" test.");
return 0;
}
输入:
/*
this shall disappear
*/
#include <string>
int main(int argc, char** argv)
{
string foo = ""/*remove that!**/;
// Remove /* this
int butNotThis = 42;
// But do */ remove this
int bar = 4 /*remove this*/* 3; // but don't remove that 3. */
return 0;//just a comment
}/*end of the file has been reached.*/
输出:
#include <string>
int main(int argc, char** argv)
{
string foo = "";
int butNotThis = 42;
int bar = 4 * 3;
return 0;
}
// this comment will be removed
就消失了。有什么规则吗?
printf("\"/* This will stay too */\"\n");
出现的应该成为代码?