Expressões Regulares

Pessoal,

Já pesquisei no google, achei bastante material sobre o assunto, porém ainda estou tendo dificuldades de obter dados de uma string através de expressões regulares. Se caso alguem puder me ajudar em resolver isso eu agradeço.

Tenho uma string com o seguinte valor:

Ex.:

[Clientes, 12345 - ABC LOJA]

Gostaria de obter somente os seguintes valores dentro de um array:

array[0] = 12345
array[1] = ABC LOJA

Agradeço desde já.

cara, da uma procurada sobre o método SPLIT de strings…

Dá pra usar StringTokenizer neste caso:


import java.util.StringTokenizer;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author desenv01
 */
public class Teste {

    public static void main(String args[]) {
        String s = "Clientes, 12345 - ABC LOJA";
        StringTokenizer st = new StringTokenizer(s, ","); //quebra a string pelo caractere ","
        st.nextToken(); //pula o primeiro elemento (Cliente)
        String str = st.nextToken(); //recebe a outra parte da string (12345 - ABC LOJA)
        st = new StringTokenizer(str, "-");
        String[] vetor = new String[st.countTokens()];
        for(int i = 0; i <= st.countTokens(); i++) {
            vetor[i] = st.nextToken().trim();
        }
        for(int i = 0; i < vetor.length; i++) {
            System.out.println(vetor[i]);
        }
    }
}

Obrigado pela ajuda srs.!! Consegui resolver o problema com a dica do wesley!

qual a diferença entre o método Split e a Classe Tokenizer?? essa eu não conhecia…

qual a diferença entre o método Split e a Classe Tokenizer?? essa eu não conhecia…

A classe StringTokenizer permite quebrar uma String em tokens (sentenças) separadas por delimitadores.
Exemplo do método split


import java.util.StringTokenizer;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author desenv01
 */
public class Teste {

    public static void main(String args[]) {
        String s = "TEXTO1 TEXTO2 TEXTO3";
        String[] str = s.split(" "); //quebra a String pelo espaco
        for(int i = 0; i < str.length; i++) {
            System.out.println(str[i]);
        }        
    }
}

legal…esse problema do nosso amigo poderia ter sido solucionado por SPLIT também, não? digo isso porque não conhecia a Tokenizer. Agora também tenho outra solução para mim mesmo…

Eu acho que não Thiago, pois a string não tinha somente 1 delimitador e sim, “dois delimitadores”; O “[Clientes,” no inicio, o “-” e o “]” no final.

Ou seja, minha string era:

[Clientes, 923723 - NOME DO CLIENTE]

O que eu queria receber no array era:

array[0] = 923723
array[1] = NOME DO CLIENTE

Acho que com o Split eu poderia resolver se a string fosse somente “923723 - NOME DO CLIENTE”, utilizando o “-” como delimitador.

Obrigado e abraços!

na verdade da sim, mas é uma solução muito “porca”…a sua solução ficou bem melhor…

Como split nao da para escolher mais de um delimitador não?

tipo


split(";" , "-" , " ");

Alguem sabe se isso a é possivel?
Se for como funcionaria no exemplo acima

[quote=gpd38]Como split nao da para escolher mais de um delimitador não?

tipo


split(";" , "-" , " ");

Alguem sabe se isso a é possivel?
Se for como funcionaria no exemplo acima[/quote]

split(";|-|\s");