Hi,
gibt es ne gute Möglichkeit nen String / Stringbuffer zeichenweise auszulesen damit man html befehle für Syntaxhighlighting einfügen kann?
Einfach die ganzen Zeichen nacheinander durchgehen braucht SEHR lange (habe Dokumente von ~ 120000 Zeichen oder mehr)
So siehts bei mir aus, für die ausgabe verwende ich ein JEditorPane
gibt es ne gute Möglichkeit nen String / Stringbuffer zeichenweise auszulesen damit man html befehle für Syntaxhighlighting einfügen kann?
Einfach die ganzen Zeichen nacheinander durchgehen braucht SEHR lange (habe Dokumente von ~ 120000 Zeichen oder mehr)
So siehts bei mir aus, für die ausgabe verwende ich ein JEditorPane
Code:
public void setOutput(StringBuffer out) {
String newOut="<HTML><FONT FACE=\"MONOSPACED\"><NOBR>";
boolean isSomething=false;
boolean isComment=false;
for ( int i=0; i<out.length(); i++ ) {
if ( out.charAt(i) == '<' && out.charAt(i+1) == '/' ) {
newOut=newOut+"<font color=\"RED\">&/";
i++;
isSomething=true;
}
else if ( out.charAt(i) == '<' && out.charAt(i+1) == '!' ) {
newOut=newOut+"<font color=\"GREEN\">&!";
i++;
isComment=true;
}
else if ( out.charAt(i) == '<' ) {
newOut=newOut+"<font color=\"RED\">&";
isSomething=true;
}
else if ( out.charAt(i) == '>' ) {
newOut=newOut+"&</font>";
isSomething=false;
isComment=false;
}
else if ( out.charAt(i) == '\\' ) newOut=newOut+"\\";
else if ( out.charAt(i) == ' ' ) newOut=newOut+"&&";
else if ( out.charAt(i) == '\t' ) newOut=newOut+"&&&&&&";
else if ( out.charAt(i) == '\n' ) newOut=newOut+"
";
else {
if ( isSomething ) newOut=newOut+out.charAt(i);
else if ( isComment ) newOut=newOut+"<font color=\"GREEN\">"+out.charAt(i)+"</font>";
else newOut=newOut+"<font color=\"BLACK\">"+out.charAt(i)+"</font>";
}
laLeseStatus.setText(i + "/" + (out.length()-1) + " read...");
}
epOutput.setText(newOut+"</NOBR></FONT></HTML>");
laLeseStatus.setText("");
}