Manipulando String com StringTokenizer

Pessoal sou iniciante com Java e estou tento dificuldade em trabalhar com manipulação de String.
Bem a String em questão é resultado de um readLine(), de um objeto BufferedReader. Na verdade eu n sei se posso alterar essa String ou apenas lê-la.

Bem o que estou tentando fazer é: um pequeno programa que seja capaz de identificar uma palavra especifica em um arquivo texto e marca-la de alguma forma para que o leitor identifique rapidamente no texto, algo como o que o navegador faz com o CTRL + F!

Meu professor de OO me indicou usar StringTokenizer, mas ainda assim eu n estou conseguindo fazer acontecer. Não sei se tenho que usar o BufferedWriter para identificar a palavra na String ou se uso o BufferedReader.

Até agora só consegui escolher um arquivo através do explorador de arquivos, mostrar o caminho absoluto e imprimi-lo em um ScrollPane.

Alguém me da uma luz?

Objetos da classe String são imutáveis, você não consegue alterá-los, você só consegue criar outra String com a alteração que quer.

Tá, sua String possui marcações ou separadores que facilitem identificar o que você procura?
Se a resposta for não, não sei onde o StringTokenizer vai ajudar.

Se você ler todo o conteúdo do arquivo em uma única String, pode usar o método indexOf para encontrar palavras no texto

QualquerCoisaWriter, serve para escrever (ou gravar), QualquerCoisaReader serve para ler.
Dica: tente traduzir o nome das classes para português, vai ficar fácil de entender o propósito da classe.

Não dá pra escrever eu um ScrollPane, você deve ter escrito em um JTextArea ou JEditorPane

Ao invés de imprimir o caminho absoluto do arquivo, crie um QualquerCoisaReader para ler o conteúdo do arquivo e e escreva esse conteúdo no seu componente de texto.

Assumindo que você escreveu em um componente do tipo TextArea, para “marcar” uma palavra pesquisada, basta você fazer:

String texto  = objetoTextArea.getText();
int    inicio = texto.indexOf( palavraPesquisada );
int    fim    = inicio + palavraPesquisada.length();
objetoTextArea.select( inicio, fim );
2 curtidas

Da documentação:
StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.

De qualquer forma, StringTokenizer ou String.split separam uma string em várias, não procuram texto na String.

2 curtidas

Obrigado pelas resposta, realmente ajudaram. Vou tentar colocar as dicas em prática!