Pegar somente numeros de uma String

Pessoal tenho uma string e gostaria de pegar somente os numeros de uma String.

Exemplo :

String unidade = “SC - 7448”

to fazendo assim hoje:

usuario.setCnpjUnidade(unidade.substring(5, 9));

Mais meu probleam é se estiver cadastrado por exemplo assim “SC-7448” ou “7448” ou etc… gostaria de pegar somente os numeros pra garantir que tenho esse 4 numeros.

Use o replaceAll():

"SC-7448".replaceAll("[^0-9]", "");
2 curtidas

[quote=surfzera]Pessoal tenho uma string e gostaria de pegar somente os numeros de uma String.

Exemplo :

String unidade = “SC - 7448”

to fazendo assim hoje:

usuario.setCnpjUnidade(unidade.substring(5, 9));

Mais meu probleam é se estiver cadastrado por exemplo assim “SC-7448” ou “7448” ou etc… gostaria de pegar somente os numeros pra garantir que tenho esse 4 numeros.[/quote]

Ola Surfzera,

package br.com.basecompany.nfe.mail;

import java.util.regex.*;

class TesteProGuj {
    private static String REGEX = "\d+";
    private static String INPUT = "askjdsadAÇSJD=544333sad|TESTE~çç-(*&¨%$#%@";

    public static void main(String[] args) {
        Matcher matcher = Pattern.compile(REGEX).matcher(INPUT);
        if (matcher.find()) {
            System.out.println("Número: " + matcher.group());
        }
    }
}

ja resolvi valeu galera

String unidade1 = unidade.replaceAll("\D", “”); //Troca tudo que não for dígito por vazio

[quote=wellington.nogueira]Caso exista números na primeira parte da string, o regex que o joyle postou não funcionaria.
[/quote]
Engraçado, acabei de testar e funcionou! Sempre usei o regex pra esse tipo de situação e nunca tive nenhum problema!

Exemplo:
https://sites.google.com/site/lucasportela/home/java/separarnumerosdeumastring

Caso exista números na primeira parte da string, o regex que o joyle postou não funcionaria.

Usando substring, ao invés de definir as posições exatamente, pode-se usar a dimensão da string para calcular as mesmas (claro, apenas se sempre for 4 números e sempre as últimas letras da string).

String variavel = "1ABC-1234"; String soNumeros = variavel.substring(variavel.length() - 4); System.out.println(soNumeros);

Outra alternativa seria usar o split (considerando que a separação é sempre o “-” )

String[] stringDividida = variavel.split("-"); String soNumeros2 = stringDividida[1].trim(); //Obtendo a segunda parte System.out.println(soNumeros2);

[quote=joyle][quote=wellington.nogueira]Caso exista números na primeira parte da string, o regex que o joyle postou não funcionaria.
[/quote]
Engraçado, acabei de testar e funcionou! Sempre usei o regex pra esse tipo de situação e nunca tive nenhum problema![/quote]
Descrevi um caso em específico: testei para a situação 1SC - 7448 que retornou 17448.