Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.79/14: Рейтинг темы: голосов - 14, средняя оценка - 4.79
4 / 4 / 2
Регистрация: 09.03.2011
Сообщений: 52
1

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

06.01.2012, 16:07. Просмотров 2904. Ответов 5
Метки нет (Все метки)


Помогите реализовать простую программу:
1. Загружается файл 1.txt;
2. Находятся и удаляются все комментарии типа /* */;
3. Сохраняется в файл 2.txt.

Добавлено через 15 часов 53 минуты
С чтением и сохранением разобрался. Да и с комментариями немного разобрался, исправьте ошибки:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public void delcomment() throws FileNotFoundException, IOException
    {
        String s2 = ""; 
        int posStart = 0;
        int posEnd = 0;
        boolean flag = false;
        for (int i = 0; i < s.length(); i++)
        {
            if (s.charAt(i) == '/' && s.charAt(i+1) == '*')
            {
                posEnd = i;
                flag = true;
            }
            if (s.charAt(i) == '*' && s.charAt(i+1) == '/' && flag)
            {
                s2 += s.substring(posStart, posEnd);
                flag = false;
            }
        }
s есть.

Проблема в том, что он удаляет всё от /* до самого конца текста, т.е. после */ тоже удаляет.

Добавлено через 29 минут
Всё, теперь работает:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public void delcomment() throws FileNotFoundException, IOException
    {
        
     boolean flag = true;
     for (int i = 0; i < s.length(); i++)
     {
      
      if (s.charAt(i) == '/' && s.charAt(i+1) == '*')
       flag = false;
      
      if (s.charAt(i) == '*' && s.charAt(i+1) == '/')
      {
       flag = true;
       i++;
       continue;
      }
      
      if (flag)
       s2 += s.charAt(i);
     }
        
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.01.2012, 16:07
Ответы с готовыми решениями:

Регулярное выражение: поиск комментариев в коде
Стоит задача вывести в консоль все комментарии с кода ( &quot;//&quot; и &quot;/* */&quot;) с помощью регулярного...

Создание уникального id для системы комментариев
Добрый день, я новичок и так получилось, что мне в наследие достался самописный сайт (раньше был...

Нужно написать несколько комментариев в простом коде
Я уже попытался написать несколько комментариев, исправьте, если неправильно. /*4.2.6. 5...

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

5
Добрый самаритянин
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,568
06.01.2012, 18:16 2
Java
1
s2 += s.charAt(i);
Рациональнее будет использовать StringBuilder
Java
1
2
3
4
StringBuilder S2 = new StringBuilder();
S2.append(s.charAt(i));
......
А содержимое как строку получите вызвав S2.toString()
Добавлено через 2 минуты
И не выйдет ли у вас индекс за пределы учитывая что у вас цикл
Java
1
for (int i = 0; i < s.length(); i++)
а не
Java
1
for (int i = 0; i < s.length() - 1; i++)
так как вы пишите
Java
1
s.charAt(i+1)
1
932 / 757 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
07.01.2012, 16:50 3
Java
1
s = s.replaceAll("/\\*.+\\*/", "");
1
2579 / 2252 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
07.01.2012, 17:45 4
запустите ка )))
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class HakerAttempt {
 
    public static void main(String[] args) {
        String good = "bla bla /* comment */ bla bla";
        System.out.println(removeComment(good));
        String bad = " bla bla System.out.println(\"now we do smth like /*\"); bla bla  System.out.println(\"and like */\"); bla bla";
        System.out.println(removeComment(bad));
        System.out.println("now we do smth like /*");
        if (true)
            System.out.println("and like */");
    }
 
    static String removeComment(String s) {
        return s.replaceAll("/\\*.+\\*/", "");
    }
}
0
Эксперт JavaЭксперт С++
8365 / 3586 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
07.01.2012, 19:49 5
Цитата Сообщение от RampKiller Посмотреть сообщение
2. Находятся и удаляются все комментарии типа /* */;
В файле находится исходный код? Если да, то на каком языке? Ведь исходный код на C/C++ - это одно, на C# - другое, а на Java - вообще третье(я говорю только про комментирование)
0
4 / 4 / 2
Регистрация: 09.03.2011
Сообщений: 52
08.01.2012, 21:29  [ТС] 6
Цитата Сообщение от M128K145 Посмотреть сообщение
В файле находится исходный код? Если да, то на каком языке? Ведь исходный код на C/C++ - это одно, на C# - другое, а на Java - вообще третье(я говорю только про комментирование)
В файле исходный код C++
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2012, 21:29

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

Удаление комментариев
Здравствуйте! Пишу программу для удаления комментариев из программ. Вот кусочек кода. Проблема...

Удаление комментариев
Всем привет ) Нужна Ваша помощь! Дан код на паскале в мемо, нужно при нажатии удалить коментарии с...

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

Удаление комментариев из файла
есть набросок функции, которая удаляет из файла все комментарии(с поддержкой многострочности.)....


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

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

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