Как удалить комментарии без регулярных выражений

1

Итак, мое назначение состояло в том, чтобы удалить все /* insert_comment */из введенной строки. Я понял, как это сделать с одним блочным комментарием, но я должен сделать это с несколькими комментариями блока в одной строке.

У меня есть идея о том, как это сделать, но я не уверен, как реализовать его в моем коде. Я попытался выполнить поиск, но большинство решений связано с регулярными выражениями, которые мне не разрешено использовать.

и btw, фрагмент не запускается

public static String removeComments(String s)
int index = 0;
String new = "";


while (index <= s.length())
{
if( s.charAt(index) = (I don't know how to do this) "/*"
String temp = s.substring(0, index)
index++;
[somehow makes it loop until it reaches */]
new = new.concat(temp)

else
index++

  return new;

да, это не имеет большого смысла, но я смущен. Я тоже сейчас болен и не могу думать прямо, но я хочу сделать это, чтобы не отставать, чем я. Большое спасибо, ребята!

  • 0
    if( s.charAt(index) = (I don't know how to do this) "/*" по сути то же самое, что и if (s.charAt(index) == '/' && s.charAt(index+1) == '*') . Это так же, как if(s.substring(index, index + 2) == "/*") . Вам, конечно, нужно будет изменить свои границы, то есть while (index < s.length - 1) . Надеюсь, это поможет.
Теги:

2 ответа

0
public class StringRemover {

    public String remove(String originalText){

        String text = originalText, comment = "";
        int index = 0;
        while( index != -1){

            comment = text.substring(text.indexOf("/*"),text.indexOf("*/")+2);
            //System.out.println("comment :"+comment);
            text = text.replace(comment, "");

            index = text.indexOf("/*");
        }
        return text;
    }
}
class RunTest
{
    public static void main(String cp[]){

        String sampleText = "This is Line1\n /* Comment1 */ \nThis is Line2 \n /* Comment2 */ " +
                "\nThis is Line3 \n /* Comment3 */ \nEnd";
        StringRemover sr = new StringRemover();
        String result = sr.remove(sampleText);
        System.out.println("Before Removing comments :\n"+sampleText);
        System.out.println("\nAfter Removing comments :\n"+result);
    }
}

Вывод:

Before Removing comments :
This is Line1
 /* Comment1 */ 
This is Line2 
 /* Comment2 */ 
This is Line3 
 /* Comment3 */ 
End

After Removing comments :
This is a Line1

This is Line2 

This is Line3 

End
  • 0
    Большое спасибо! Это действительно очень помогло :)
  • 0
    Подумайте о принятии ответа, если он вам поможет :)
0

Я знаю, что будет больше решений, но это определенно должно работать:

public static void main(String[] args) {

        String stringWithComments = "mystring   /*this is a comment*/";

        String comment = stringWithComments.substring(stringWithComments.indexOf("/*") + 2 , stringWithComments.indexOf("*/")); // +2 because the String will start from "/*"
        System.out.println(comment);    // this prints out the extracted comment

        System.out.println(stringWithComments.replace("/*" + comment + "*/" , "")); //replaces your /*comment*/ with an empty string

    }

РЕДАКТИРОВАТЬ:

выход:

this is a comment
mystring

Надеюсь, поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню