public class TesteIndentation {
private int i = 0;
private StringBuffer buffer = new StringBuffer();
public String ident(String codigo) {
char c = '[code]
public class TesteIndentation {
private int i = 0;
private StringBuffer buffer = new StringBuffer();
public String ident(String codigo) {
char c = '\0';
int cont = 0;
StringBuffer aux = new StringBuffer(codigo);
for (; i < aux.length(); i++) {
c = aux.charAt(i);
buffer.append(c);
if (c == '>') {
cont++;
if (cont >= 0) {
buffer.append("\n" + insereOuRemoveEspaco(cont * 3));
}
} else if (c == '/' && aux.charAt(i - 1) == '<') {
++i; //coloquei essa inst. para o char '/' nao repetir
for (; i < aux.length(); i++) {
c = aux.charAt(i);
buffer.append(c);
if (c == '>') {
cont--;
if (cont >= 0) {
buffer.append("\n" + insereOuRemoveEspaco(cont * 3));
break;
}
}
}
}
}
return buffer.toString();
}
private String insereOuRemoveEspaco(int num) {
StringBuffer branco = new StringBuffer();
for (int j = 0; j < num; j++) {
branco.append(" ");
}
return branco.toString();
}
public static void main(String[] args) {
TesteIndentation ti = new TesteIndentation();
//esse é um exemplo de codigo html que usei para meus testes.
String str = "<form name='form' method='post'><table id='meuId'><tr><td></td></tr></table></form>";
System.out.println(ti.ident(str));
}
}
for (; i < aux.length(); i++) {
c = aux.charAt(i);
buffer.append(c);
if (c == '>') {
cont++;
if (cont >= 0) {
buffer.append("\n" + insereOuRemoveEspaco(cont * 3));
}
} else if (c == '/' && aux.charAt(i - 1) == '<') {
++i; //coloquei essa inst. para o char '/' nao repetir
for (; i < aux.length(); i++) {
c = aux.charAt(i);
buffer.append(c);
if (c == '>') {
cont--;
if (cont >= 0) {
buffer.append("\n" + insereOuRemoveEspaco(cont * 3));
break;
}
}
}
}
}
return buffer.toString();
}
private String insereOuRemoveEspaco(int num) {
StringBuffer branco = new StringBuffer();
for (int j = 0; j < num; j++) {
branco.append(" ");
}
return branco.toString();
}
public static void main(String[] args) {
TesteIndentation ti = new TesteIndentation();
//esse é um exemplo de codigo html que usei para meus testes.
String str = "
System.out.println(ti.ident(str));
}
}
[/code]
<form name='form' method='post'>
<table id='meuId'>
<tr>
<td>
</td> //essa tag nao alinhoou com a outra <td>
</tr>
</table>
</form>
o meu problema é justamente, que quando o programa encontra a primeira tag de fechamento, ele nao recua os espaços, ele adianta os espaços, e nao eh isso que eu to querendo que aconteça, nao entendi pq ele nao recuou e com isso as outras tags tambem ficaram desalinhadas. Entao gostaria da ajuda de vcs mais uma vez para resolver esse problema.
Mais uma vez agradeço a todos que puderem me ajudar.
[]'s
