Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 23.05.2017
Сообщений: 10
1

Удаление комментариев

20.11.2018, 23:59. Просмотров 619. Ответов 3


Имеется задача по удалению комментариев из файла
и есть решение но оно не отрабатывает многострочные комментарии помогите разобраться в чем причина

вот сам код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
 
 
namespace Strings3
{
    class Program
    {
        static void Main(string[] args)
        {
            string inFileName = @"..\..\input.txt";
            string outFileName = @"..\..\output.txt";
            string pattern1 = @"/\*[^*]*\*+(?:[^/*][^*]*\*+)+/";
            string pattern2 = @"(//[^\n]*)";
            string input;
            Regex reg1 = new Regex(pattern1, RegexOptions.Singleline);
            Regex reg2 = new Regex(pattern2);
            
            MatchEvaluator MyEval1 = new MatchEvaluator(MyReplace);
            MatchEvaluator MyEval2 = new MatchEvaluator(MyReplace);
            StreamReader inStream = new StreamReader(inFileName);
            StreamWriter outStream = new StreamWriter(outFileName);
            for (; ; )
            {
                input = inStream.ReadLine();
                if (input == null) break;
                input = reg1.Replace(input, MyEval1);
                input = reg2.Replace(input, MyEval2);
                if (input != string.Empty)
                    outStream.WriteLine(input);
            }
            outStream.Close();
            inStream.Close();
        }
        static string MyReplace(Match m)
        {
            string str = m.ToString();
            str = str.Replace(str, string.Empty);
            return str;
        }
    }
}
вот input.txt
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication3
{  /// class Program here
  class Program
  {
    static void Main(string[] args)
    {
      /// TODO code application logic here
      string ss="sdfsdf\"\\*sdfsdf*\\\"";
      int i /*jjjjj*/ = 0;
      string s = "\t";
      char c = '\t';
      char cc = '/';
      string str = "'";//COMMENT
      char ccc = '*';
      char cccc = '"'; //"hjhkjhkj
      Console.WriteLine("/*dfsdf*////****/**//**Hello, world!\\");/**/ //
      int ccccc = 100/'*';
      char f = '\\';
      char f1 = '\n';
      char f2 = '\"';
      /* " */ string z = /*"hello"*/"test";
      /* " */ string z = /*"he//o"*/"test";
      "".ToString();
    }
  }
}
вот output
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{  
  class Program
  {
    static void Main(string[] args)
    {
      
      string ss="sdfsdf\"\\*sdfsdf*\\\"";
      int i /*jjjjj*/ = 0;
      string s = "\t";
      char c = '\t';
      char cc = '/';
      string str = "'";
      char ccc = '*';
      char cccc = '"'; 
      Console.WriteLine("/*dfsdf*
      int ccccc = 100/'*';
      char f = '\\';
      char f1 = '\n';
      char f2 = '\"';
      /* " */ string z = /*"hello"*/"test";
      /* " */ string z = /*"he
      "".ToString();
    }
  }
}
не пойму в чем беда
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.11.2018, 23:59
Ответы с готовыми решениями:

Удаление комментариев
необходимо написать программу для удаления комментариев в коде из исходного файла с разрешением...

Удаление комментариев из кода типа /* */
Дали такое задание: используя концепцию конечного автомата удалить из кода комментарии типа: "/*...

Удаление из текста комментариев и тегов summary
Исходный текст представляет описание класса на C#. Напишите процедуру, удаляющую из этого текста...

Шаблон комментариев
Здравствуйте. Читал в одном учебнике по C#, что в Visual Studio можно как-то включить режим...

3
freeba
21.11.2018, 00:02
  #2

Не по теме:

По стопам Дениса Попова намерены пойти?

0
0 / 0 / 0
Регистрация: 23.05.2017
Сообщений: 10
21.11.2018, 00:07  [ТС] 3
Не совсем понял
0
4651 / 3203 / 1365
Регистрация: 09.05.2015
Сообщений: 7,874
21.11.2018, 00:26 4
Я бы Roslyn использовал. Использовать Regex'ы для данной задачи это извращение...

Удаление комментариев
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2018, 00:26

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Поиск комментариев в коде C#
Нужно в массиве строк( код C#) найти (большие) комментарии типа /* Бла бла бла бла бла бла бал...

Генератор комментариев для документации
Есть какие-либо плагины для MSVS2015 для создания подобных комментариев? /// <summary> ///...

Дизассемблинг mscorlib с сохранением комментариев
Ребята,видел у кого исходники с комментариями. Юзал DisС# = обычные исходники. Так вот. У...

Регулярное выражение для многострочных комментариев
помогите сделать регулярку для много строчных комментариев...тобишь вида /*bla bla*/ я делаю вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.