Ler texto e separar palavras

Boa noite,
Estou fazendo um programa para estudos, preciso ler um arquivo de texto com um texto qualquer (um livro por exemplo) e separar as palavras lidas.
Eu já consegui ler o arquivo de texto, pegar uma linha e colocar em uma String, meu problema é separar as palavras da String…
Já li algumas coisas mostrando como, mas esbarrei em um problema, eu só consigo separar por espaço, mas preciso separar também por outros caracteres…

Por exemplo:
A empresa já está tomando as devidas providências, confiante na Justiça para que a posse da propriedade seja reintegrada, dentro dos princípios legais.

Não estou conseguindo separar quando chega na ‘,’ por exemplo… Queria algumas ideias de como resolver isso… Preciso que fique dessa forma

A
empresa

está
tomando

assim por diante, para que eu possa usar cada palavra separada…

Usa o método split() da String. Ele vai retornar um vetor, tipo:

String linha = "olá mundo; Java JSE; JEE."; String[] s = linha.split(";");
Você terá:
s[0] -> olá mundo
s[1] -> Java JSE
s[2] -> JEE.

[quote=romarcio]Usa o método split() da String. Ele vai retornar um vetor, tipo:

String linha = "olá mundo; Java JSE; JEE."; String[] s = linha.split(";");
Você terá:
s[0] -> olá mundo
s[1] -> Java JSE
s[2] -> JEE.[/quote]

Já pensei nisso, mas ainda não resolve meu problema, porque o texto pode ter vários caracteres (!,?,.)
Depois vou ter que procurar as palavras também, por isso queria as palavras limpas…
To pensando em depois de ler as palavras, passar elas por um “filtro” para tirar esse caracteres…

Dá uma olhada em expressões regulares. Aqui tem um tutorial bom, usando a api padrão: http://download.oracle.com/javase/tutorial/essential/regex/

Um modo mais simples ainda seria utilizando tokenizer…

http://download.oracle.com/javase/1.4.2/docs/api/java/util/StringTokenizer.html

O Bom seria se o código tivesse ficado bonito… rs
Mas funciona! torce pra ninguem abrir o codigo fonte!

public class TesteString {
	public static void main(String[] args) {
		String linha = "olá mundo, Java. JSE; JEE.";
		linha=linha.replace(",", ";");
		System.out.println(linha);
		linha=linha.replace(".", ";");
		System.out.println(linha);
		String[] s = linha.split(";");
		System.out.println(s[0]);
		System.out.println(s[1]);
		System.out.println(s[2]);
		System.out.println(s[3]);
	}
}

[quote=cristiano.benato]Um modo mais simples ainda seria utilizando tokenizer…

http://download.oracle.com/javase/1.4.2/docs/api/java/util/StringTokenizer.html[/quote]

Cristiano, você leu a API quando passou o link para o colega?
Principalmente essa parte:

[quote]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.

The following example illustrates how the String.split method can be used to break up a string into its basic tokens: [/quote]

Classe legada e recomenda-se a utilização de regex com o método split da String. Tome cuidado com o que passa aos colegas.

denisspitfire, o problema do seu código é se ele precisar filtrar com “!”, “@”, “?”, como fica? Mais três replaces? Não é algo dinamico.

Hokos use a recomendação que foi dada, Regex. A API Pattern tem a demonstração de uns regex, é interessante que leia.

Abraços.