Pessoal continuando a migracao aqui de dbf :thumbdown: para firebird
tem um campo aqui RG:
nesse campo tem numeros e letras…
tipo assim:
0101010101 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:
0101010101 SSP / BA
ou
0101010101 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 = "0123456789";
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
>
Se, o teu número de RG não for de tamanho fixo, você pode substituir tudo que não for número assim:
import java.text.ParseException;
public class Teste {
public static void main(String[] args) throws ParseException {
System.out.println("0101010101 SSP / BA ".replaceAll("[^0-9]", ""));
System.out.println("0101010101 SSP \ BA ".replaceAll("[^0-9]", ""));
System.out.println("0101010101 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:
"1020462869 SSP/BA".substring(0, 11);
Vixi, ignora a solução q eu disse, essa do thiago é bem melhor.
[quote=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:
import java.text.ParseException;
public class Teste {
public static void main(String[] args) throws ParseException {
System.out.println("0101010101 SSP / BA ".replaceAll("[^0-9]", ""));
System.out.println("0101010101 SSP \ BA ".replaceAll("[^0-9]", ""));
System.out.println("0101010101 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:
"1020462869 SSP/BA".substring(0, 11);
[/quote]
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:
versão DBase: 2.03
NUMERO RG >>>> 7474077
EstadoCivil>>>> 1
Exception in thread "Thread-2" java.lang.StringIndexOutOfBoundsException: String index out of range: 11
at java.lang.String.substring(String.java:1934)
at br.com.link3.dp.convert.rh.quimera.FuncionariosDao.next(FuncionariosDao.java:356)
at br.com.link3.dp.convert.ConvertManager.export(ConvertManager.java:259)
at br.com.link3.dp.convert.ConvertManager.processa(ConvertManager.java:132)
at br.com.link3.dp.convert.MainForm$5.run(MainForm.java:348)
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
Mesmo assim vai dar erro, o numero do RG que esta ali no código dele tem 7 algarismos…
Cara, usa o “0101010101 SSP / BA “.replaceAll(”[^0-9]”, “”) que o thiago falou… ai não precisará de subString.
rg = rg.replaceAll("[^0-9]", "");
[quote=Poneis123]Mesmo assim vai dar erro, o numero do RG que esta ali no código dele tem 7 algarismos…
Cara, usa o "0101010101 SSP / BA ".replaceAll("[^0-9]", "") que o thiago falou… ai não precisará de subString.
rg = rg.replaceAll("[^0-9]", "");
Eu fiz isso olha aqui oh:
bean.setNumerorg(numeroRg8.replaceAll("[^0-9]", "")) ;
e dei um print no resultado.
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
E qual é o código que você está utilizando para imprimir isso aqui NUMERO RG >>>> 1033083 SSP\ BA
Esse aqui oh…
System.out.println("NUMERO RG >>>> "+numeroRg1);
Cara, como string é imutável, todos os métodos da classe string, devolvem um novo objeto.
Exemplificando
String a = "thiago";
String b = a.substring(2,5);
System.out.println(a);
System.out.println(b);
No teu caso, se você usar
System.out.println("NUMERO RG >>>> " + bean.getNumerorg());
você terá o valor armazenado e alterado no teu objeto
[color=darkblue]Aqui também tem mais algumas opções :[/color]
Somente numeros na string