Pessoal alguém tem alguma idéia de como fazer um método que passada uma string como parâmetro ele remova os comentários dessa string, por exemplo: String str = new String(" rssrs /* comentários…*/ srsrs");
String str2 = removeComentario(str); o conteúdo de str2 seria: “rsrsrsrsrrsr” , ou seja , quero que o método remova tudo que esteja entre /* e */ , será que alguém tem uma idéia ou terei que fazer isso no braço ? estou tendo dificuldades em fazer isso no braço…valeu pessoal, até mais…
Você vai ter que criar um método para resolver este seu problema
na classe String tem um método chamado indexOf() onde você passa uma determinado pedaço da String que você quer saber a posicao e ele te retorna um inteiro com a posicao do caracter.
Ou seja, com a informação do inicio e do fim você pode remover este texto com o subtring() que é outro método da classe String.
// Fonte: http://ostermiller.org/findcomment.html
class RemoverComentarios {
public static void main(String[] args) {
String linha = "Esta linha tem /* um come * / ntario */ que termina nesta linha mesmo";
String resultado = linha.replaceAll ("(?:/\*(?:[^*]|(?:\*+[^*/]))*\*+/)|(?://.*)","");
System.out.println (resultado);
}
}
O Stephen Ostermiller deve ter queimado muito fósforo para achar a tal expressão regular. Eu, se tivesse um problema semelhante, usaria a classe StreamTokenizer, que limpa comentários pelo método tradicional.
Pessoal muito obrigado mesmo, sou novo aqui no fórun e é minha primeira mensagem, valeu pela ajuda…vou tentar aqui e qualquer coisa volto de novo…até mais…
Pessoa voltei, problema resolvido através da classe java.io.StreamTokenizer , valeu mesmo pessoal, gostei bastante do fórum… public static String removeComentario(String texto)
{
StreamTokenizer saida = new StreamTokenizer(new StringReader(texto));
saida.slashStarComments(true); //reconhece comentários seguidos de //
saida.slashSlashComments(true); //reconhece comentários entre /* */
return saida.toString();
}