Slartibartfas
Grünschnabel
HI!
Hab ein Programm zum Suchen (und . Ersetzen) von Wörtern und Buchstabensequenzen geschrieben, weiss aber nicht wie ich die gefundenen Wörter in JTextArea markieren soll.
1. suchen:
Das Programm übergibt Strings (mit StringTokenizer vom Text getrennt) an die Suchmethode -> die Suchmethode gibt einen int[] array mit Beginn- und Endwerten der gesuchten Sequenzen im String (oder null, wen keine Übereinstimmung)..
2. Ersetzen:
Das Programm übergibt Strings (mit StringTokenizer vom Text getrennt) an die Ersetzmethode -> diese gibt entweder null oder ein String mit dem ersetzten Wort oder der Buchstabensequenz.....
Nun sollen die Wörter im JTextArea markiert werden, ich konnte aber bisher keine Methode finden, die das macht..
Danke im Voraus für eure Hilfe...
hier paar Auzüge meines codes:
such-class
und hier ein Teil der Methodode zum Ersetzen im TextEditor
Hab ein Programm zum Suchen (und . Ersetzen) von Wörtern und Buchstabensequenzen geschrieben, weiss aber nicht wie ich die gefundenen Wörter in JTextArea markieren soll.
1. suchen:
Das Programm übergibt Strings (mit StringTokenizer vom Text getrennt) an die Suchmethode -> die Suchmethode gibt einen int[] array mit Beginn- und Endwerten der gesuchten Sequenzen im String (oder null, wen keine Übereinstimmung)..
2. Ersetzen:
Das Programm übergibt Strings (mit StringTokenizer vom Text getrennt) an die Ersetzmethode -> diese gibt entweder null oder ein String mit dem ersetzten Wort oder der Buchstabensequenz.....
Nun sollen die Wörter im JTextArea markiert werden, ich konnte aber bisher keine Methode finden, die das macht..
Danke im Voraus für eure Hilfe...
hier paar Auzüge meines codes:
such-class
Code:
class Search{
String key;
String repl;
int[] pos;
int[] dummy;
int counter;
int startCompareAt;
/** Creates a new instance of Search */
public Search() {
}
public Search(String key){
this.key = key;
pos = null;
}
public Search(String key, String repl){
this.key = key;
this.repl = repl;
pos = null;
}
public void enlargeArray(){
int[] dummyArray = new int[counter*2];
//System.out.println("länge des darrays " + dummyArray.length);
if(counter > 1){
for(int i = 0; i < pos.length; i++){
dummyArray[i] = pos[i];
}
}
pos = dummyArray;
}
public int[] compareWord(String word){
StringBuffer wordCheck = new StringBuffer(word.toLowerCase());
StringBuffer keyCheck = new StringBuffer(key.toLowerCase());
for(int i = startCompareAt; i < wordCheck.length();i++){
if(wordCheck.charAt(i)==keyCheck.charAt(0)){
try{
String test = (word.substring(i, (i+key.length())));
if(test.equalsIgnoreCase(key)){
++counter;
//System.out.println("counter " + counter);
//System.out.println("w " + word.length());
enlargeArray();
//System.out.println((word.substring(i, (i+key.length()))));
pos[counter*2-2] = i;
pos[counter*2-1] = (i+key.length()-1);
startCompareAt = i+key.length();
//System.out.println("st " + startCompareAt);
return compareWord(word);
}
}
catch(IndexOutOfBoundsException iobe){
dummy = pos;
pos = null;
counter = 0;
startCompareAt = 0;
return dummy;
}
}
}
dummy = pos;
pos = null;
counter = 0;
startCompareAt = 0;
return dummy;
}
public String replacingWord(String word){
if(word.length() == key.length() && compareWord(word) != null){
return repl;
}
return null;
}
public String replacingSeq(String word){
if((compareWord(word)) != null){
StringBuffer wordBuf = new StringBuffer(word);
for(int i = 0; i < dummy.length; i+=2){
wordBuf.replace(dummy[i], dummy[i+1]+1, repl);
}
return wordBuf.toString();
}
return null;
}
}
Code:
StringTokenizer token = new StringTokenizer(pane.getText());
StringBuffer textBuff = new StringBuffer(pane.getText());
String key;
String repl;
Search search = new Search(key, repl);
try{
//while(token.hasMoreTokens()){
repl = token.nextToken();
repl = search.replacingWord(repl);
textBuff.append(repl);
textBuff.append(token.nextElement());
//}
}
catch(NoSuchElementException nse){}
doNewCommand();
pane.setText(textBuff.toString());