Pessoal continuando a migracao aqui de dbf :thumbdown: para firebird
tem um campo aqui RG:
nesse campo tem numeros e letras…
tipo assim:
[telefoneremovido]SSP/BA
minha consulta eu preciso que ele traga somente os numeros.
eu vi algumas funcoes do StringUtils da jacarta, como removeEnd e talz,…
mas o caso eh que tem campos que estao assim:
[telefoneremovido]SSP/BA
ou
[telefoneremovido]SSP\BA
alguem tem uma ideia de como eu faço pra poder ele trazer somente os numeros do campo String???
a Qtd de números é sempre a mesma? se for… pega os 10 primeiros caracteres(que serão os numeros do RG)
Caso não seja vc precisará percorrer a String e ir comparando um à um…
por exemplo:
String numeros = "[telefone removido]";
for(int i = 0; i<rg.length; i++){
if(numeros.indexOf(rg.charAt(i)) == -1) //significa que chegou em um caracter da String rg que não é número(não contem na String numeros)
rg = rg.substring(0, i);
} Fiz o código no forum msm, pode ter erro de sintaxe… ve se entende a logica
>
thiago.correa
Se, o teu número de RG não for de tamanho fixo, você pode substituir tudo que não for número assim:
importjava.text.ParseException;publicclassTeste{publicstaticvoidmain(String[]args)throwsParseException{System.out.println("[telefone removido] SSP / BA ".replaceAll("[^0-9]",""));System.out.println("[telefone removido] SSP \ BA ".replaceAll("[^0-9]",""));System.out.println("[telefone removido] SSP/BA ".replaceAll("[^0-9]",""));}}
Agora, caso ele seja de um tamanho fixo (por ex. tamanho 10) você pode fazer um substring do texto exemplo:
"[telefone removido] SSP/BA".substring(0,11);
Poneis123
Vixi, ignora a solução q eu disse, essa do thiago é bem melhor.
vinnyparker
thiago.correa:
Se, o teu número de RG não for de tamanho fixo, você pode substituir tudo que não for número assim:
importjava.text.ParseException;publicclassTeste{publicstaticvoidmain(String[]args)throwsParseException{System.out.println("[telefone removido] SSP / BA ".replaceAll("[^0-9]",""));System.out.println("[telefone removido] SSP \ BA ".replaceAll("[^0-9]",""));System.out.println("[telefone removido] SSP/BA ".replaceAll("[^0-9]",""));}}
Agora, caso ele seja de um tamanho fixo (por ex. tamanho 10) você pode fazer um substring do texto exemplo:
"[telefone removido] SSP/BA".substring(0,11);
O ParseException resolveria, mas eu teria q testar varias possibilidades, ai eu perco muito tempo…
tentei o substring, pq o RG tem no maximo 11 digitos, mas deu esse erro aqui oh:
Na verdade o exemplo que eu te passei ele retira tudo que não for numérico, no caso eu te mostrei as possibilidades que você me passou.
Agora quanto ao erro, quer dizer que o teu texto tem menos do que 11 caracteres.
Uma pequena correção ao invés de 11 use 10
Poneis123
Mesmo assim vai dar erro, o numero do RG que esta ali no código dele tem 7 algarismos…
Cara, usa o “[telefone removido] SSP / BA “.replaceAll(”[^0-9]”, “”) que o thiago falou… ai não precisará de subString.
rg=rg.replaceAll("[^0-9]","");
vinnyparker
[quote=Poneis123]Mesmo assim vai dar erro, o numero do RG que esta ali no código dele tem 7 algarismos…
Cara, usa o "[telefone removido] SSP / BA ".replaceAll("[^0-9]", "") que o thiago falou… ai não precisará de subString.
INFO [Thread-2] (_Quimera.java:39) - Criada pasta: files/1052/dprh
nome: /br/com/link3/dp/convert/rh/quimera
file:/home/vinny/workspace/l3convert/bin/br/com/link3/dp/convert/rh/quimera
versão DBase: 2.03
EstadoCivil>>>> 1
oiae o nome do funcionario: 1 JERONIMO NERY DA SILVA
NUMERO RG >>>> 7474077
sexo >>>> MASCULINO
INFO [Thread-2] (ConvertManager.java:260) - [info]: 1/1210
INFO [Thread-2] (ConvertManager.java:266) - [init] export Funcionarios
EstadoCivil>>>> 1
oiae o nome do funcionario: 2 MARINA PIRES RAMOS
NUMERO RG >>>> 1033083 SSP\ BA
SEXO >>>> FEMININO
thiago.correa
E qual é o código que você está utilizando para imprimir isso aqui NUMERO RG >>>> 1033083 SSP\ BA
vinnyparker
Esse aqui oh…
System.out.println("NUMERO RG >>>> "+numeroRg1);
thiago.correa
Cara, como string é imutável, todos os métodos da classe string, devolvem um novo objeto.