Estou trabalhando uma classe que me deve retornar vários valores.
Para facilitar a manipulação desses retornos decidi usar o seguinte médoto:
return string1 +"|"+ string2 +"|"+ string3
Como ainda sou meio “grosso” no Java não estou conseguindo trabalhar esses valores, por exemplo:
[quote]Eu chamo o método que contém esse retorno;
Seto uma label qualquer com o valor da string1 (tudo até o primeiro pipe, exceto o próprio pipe);
Seto uma segunda label com o valor da string3 (tudo a partir do segundo pipe até o final do retorno, exceto o proprio pipe);[/quote]
Como eu faço essa manipulação de string?
(espero ter sido claro… :lol:)
Credo, eu retornaria esses valores em um List<String>.
Mas se você é obrigado a retornar uma String (sabe como é que é, pode ser que você esteja criando algo para ser acessível via web services…) então você pode usar String.split. Exemplo:
String valor = "Jesus|Maria|Jose";
String[] valores = valor.split (Pattern.quote ("|"));
Na verdade eu não sou obrigado a retornar uma String… É que como eu disse, eu sou grossão em Java ainda, estou reaprendendo tudo (aprender de pois de velho é trash mano, acredite…)!
Como assim usar uma List?
Eu nunca usei, você poderia me dar um exemplo ou alguma referência para que eu pudesse ler?
Acho que sou mais velho que você . O que é difícil é aprender as coisas estando enferrujado; por exemplo, se eu tivesse de pegar meus livros de álgebra de novo.
Hummmm… para código novo, evite usar StringTokenizer. Há dois grandes problemas com o StringTokenizer:
a) Ele não é tão flexível, rápido, conveniente e econômico de recursos quanto o String.split
b) StringTokenizer pode dar resultados inesperados, porque StringTokenizer não aceita campos vazios nem separadores com mais de um caracter.
Por exemplo, “abc||d|e|||f||”.split (Pattern.quote("|"), -1) retorna um array contendo “abc”, “”, “d”, “e”, “”, “”, “f”, “”, “”.
Mas se você for usar StringTokenizer, ele retorna algo semelhante a “abc”, “d”, “e”, “f”, não retornando nenhum dos campos vazios, o que normalmente é um comportamento indesejado.
“abc||d|e|||f||”.split ("[|]+")) retorna “abc”, “d”, “e”, “f”, igualzinho ao StringTokenizer.
Eu ainda prefiro String.split porque é mais fácil de debugar (basta ver o array que ele retornou). StringTokenizer exige você ficar andando sobre a string, e isso é desajeitado.
Use StringBuffer em código Java 1.4 ou anterior, ou se estiver usando Java 5.0 ou posterior, se o StringBuffer for compartilhado entre várias threads (um evento reconhecidamente raro mas não improvável).
Use StringBuilder em código Java 5.0 ou posterior
Hum… eu sou extremamente preguiçoso e prefiro usar sempre List<String>, não String[]. De qualquer maneira, parece que o que você quer retornar é na verdade um objeto:
class Endereco {
public String logradouro;
public String complemento;
public Endereco (String L, String C) { logradouro = L; complemento = C; }
}
// Faça assim:
public Endereco getEndereco () {
return new Endereco ("Av. Paulista", "900");
}
// Não assim:
public String[] getEndereco () {
return new String []{"Av. Paulista", "900"};
}
// Ou mesmo assim:
public List<String> getEndereco () {
List<String> endereco = new ArrayList<String>();
endereco.add ("Av. Paulista");
endereco.add ("900");
return endereco;
}