Eu estou querendo pagar parte de uma string sendo que essa parte é numero, o problema é que eu nao sei a posição em que o primeiro numero estar e só quero pegar alguns desses números, tipo:
Stringpalavra=" ad NF 1122 jkj das65456";
Eu só quero pegar o 1122 os outros números não me interessa, como faço isso?! Só para lembrar, eu não sei a posição, mas sei que antes do numero que eiu quero sempre vem “NF”…
Essas coisas são sempre chatinhas, você poderia usar expressões regulares, já fez isso antes?
a regex “NF ?\d+” pode resolver seu problema, mas no caso ela irá retornar o NF junto com os números, se aplicasse a expressão à essa String que você usou como exemplo ela casaria com “NF 1122”, você pode tratar o resto a partir daí, ou até tentar uma abordagem diferente.
Rodrigo_Sasaki
Vamos ver se dá pra fazer uma regex que te ajude melhor, precisamos de mais informações.
Os números que você quer são sempre os primeiros números da String? Ou antes deles podem aparecer outros números?
I
IsaRakel
Aparecem números antes também. Estava usando .replaceAll("//D",""); para pegar todos os números depois de NF, mas aparecia números que eu não queria que aparecesse.
Rodrigo_Sasaki
certo, você pode cortar a String antes, ou fazer da maneira que eu falei.
Tentou usar a expressão ?
I
IsaRakel
Eu nunca usei antes não sei como funciona
Rodrigo_Sasaki
Tem um artigo do GUJ que explica um pouco sobre como usá-las, dê uma lida:
Stringpalavra=" ad NF 1122 jkj das65456";intindexOf=palavra.indexOf("NF");palavra=palavra.substring(indexOf+2,palavra.length());StringBuilderb=newStringBuilder();booleanachoNumero=false;for(inti=0;i<palavra.length();i++){if(Character.isDigit(palavra.charAt(i))){achoNumero=true;b.append(palavra.charAt(i));}else{if(achoNumero){break;}}}System.out.println(b.toString());
tondatto
Utilize Regex.
importjava.util.regex.Matcher;importjava.util.regex.Pattern;/** * Método que retorna uma lista de todas as ocorrências * de números que atendem ao padrão "NF\s+(\d+)" */publicList<Integer>getNumbersFromString(Stringtexto){List<Integer>lista=newArrayList<Integer>();// Cria seu padrão do Regex para recuperar todo // numero (\d+) precedido por 'NF' e espaço sequencialPatternpattern=Pattern.compile("NF\\s+(\\d+)");Matchermatcher=pattern.matcher(texto);// Procurar por todas as ocorrencias// e adiciona-las na listawhile(matcher.find()){intnumber=Integer.parseInt(matcher.group(1));lista.add(number)}returnlista;}