// valores por linha
String[] valores;
valores = new linha.split(System.getProperty("line.separator"));
// espaço em branco:
String[] valores;
valores = new linha.split(" ");
StringTokenizer ou String.split()?
6 Respostas
Olá pessoal.
Eu andei procurando aqui no fórum e vi que tem alguns tópicos que muitos preferem utilizar oString.Split(), qual seria a razão? O StringTokenizer está em desuso?
Para o meu caso, comString.split(), eu consigo separar o conteúdo de um arquivo texto em linhas e depois por espaço em branco?
Consegue sim. O método split() recebe como parâmetro uma expressão regular contendo o(s) separador(es). Dê uma olhada na documentação:
http://java.sun.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String)
Particularmente, eu acho o método split() muito mais simples, principalmente depois que implementaram o for each em Java.
Na minha opinião os dois são bons porém o split é mais fácil de se manipular pois retorna um array de string!
Bem, decidi utilizar o split(), mas estou com problemas.
O que eu estou fazendo de errado no código abaixo?
final String NOVA_LINHA = System.getProperty("line.separator")
conteudo = lerArquivoTexto(caminho);
linhaDoTexto = conteudo.split(NOVA_LINHA);
// 1º linha = nome do grafo
setNomeGrafo(linhaDoTexto[0]);
for (String linha : linhaDoTexto) {
// na linha contém o valor: "# No8"
valor = linha.split(" ");
if (valor[0] == "#") { // nunca é verdadeiro essa condição
noSaida = valor[1]; // com isso não passo o nome "No8"
inseriNo(noSaida);
O problema é a comparação das strings:
Você está fazendo
if (valor[0] == "#") { // nunca é verdadeiro essa condição
Quando devia fazer:
if ("#".equals(valor[0])) { // nunca é verdadeiro essa condição
Era isso mesmo. Vlw.
Só para entender melhor, no caso, eu não consigo comparar com “==”, pelo fato da variável valor ser uma String, com isso, para comparar um objeto String tenho que utilizar o método equals(), é isso?
“==” é apenas para tipos primitivos?
No caso de objetos, o operador == compara os endereços de memória nos quais o objeto reside. Então, o uso de == para comparar strings não verifica seus conteúdos, mas sim, os endereços de memória correspondentes.
Resumindo: sim, use == apenas para tipos primitivos.