Ниже мой код:Как игнорировать чтение содержимого/* комментарий */при чтении файла
string ckeywords = File.ReadAllText("E:\\ckeywords.csv");
string[] clines = File.ReadAllLines("E:\\cprogram\\cpro\\bubblesort.c");
string letters="";
foreach(string line in clines)
{
char[] c = line.ToCharArray();
foreach(char i in c)
{
if (i == '/' || i == '"')
{
break;
}
else
{
letters = letters + i;
}
}
}
letters = Regex.Replace(letters, @"[^a-zA-Z ]+", " ");
List<string> listofc = letters.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> listofcsv = ckeywords.Split(new char[] { ',', '\t', '\n', ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(p => p.Trim()).ToList();
List<string> Commonlist = listofcsv.Intersect(listofc).ToList();
С этим if
состоянии, я могу игнорировать чтение содержимого одной строки комментария и содержимое между ("").
Мне нужно игнорировать чтение содержимого нескольких строк. Какое условие я должен использовать? Предположим, что мой .c-файл имеет эту строку комментария, поэтому с приведенным выше кодом я не знаю, как начать итерацию с/* на */и игнорировать содержимое между ними.
/* printf ("Отсортированный список в порядке возрастания: \ n");
для (с = 0; с < п; C++) Е ("% d \ п", массив [с]); */
http://stackoverflow.com/questions/3524317/regex-to-strip-line-comments-from-c-sharp/3524689#3524689 –
качестве альтернативы. Если вы читаете строку для строки, вы можете просто найти начало/* и удалить все из этой строки. Вы вытаскиваете флаг и удаляете каждую строку, пока не увидите конец * /. И не удаляйте ничего из этого. –
Я знаю логику. Мне нужен код в csharp, чтобы игнорировать его проще. –