2015-02-05 2 views
1

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

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

и кстати, фрагмент кода не работает

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

'если (s.charAt (индекс) = (я не знаю, как это сделать) "/ *"', по существу, такой же, как 'если (s .charAt (index) == '/' && s.charAt (index + 1) == '*') '. Он также совпадает с' if (s.substring (index, index + 2) == "/ * "). Конечно, вам нужно будет изменить свои границы, то есть' while (index

ответ

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 

    } 

EDIT:

выход:

this is a comment 
mystring 

Надеется, что это помогает.

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

Рассмотрите возможность принятия ответа если это поможет вам :) – Mohsin