Pegar pedaço da String

8 respostas
T

Tenho uma String(HTML do Bing), queria pegar apenas o número de resultados encontrados.

EX: 1 a 10 de 144.000.000 resultados

Como consigo extrair apenas o número de resultados da pesquisa, visto que o número de casas decimais podem variar.

Dei uma olhada na subString e em expressões regulares mas não consegui.

8 Respostas

caio.ribeiro.pereira

Deixa ver se entendi, você precisa pegar os dados da tag span completa?

Que é: 1 a 10 de 144.000.000 resultados

E precisa extrai os 3 números que são 1 , 10 e 144.000.000 ?

Ou você apenas precisa pegar o 144.000.000 dessa string toda?

T

quero apenas o 144.000.000.

T

Criei a seguinte espressão regular:

Pattern padrao = Pattern.compile("[0-9]*[.]?[0-9]*[.]?[0-9]*[.]?[0-9]* resultados");
Matcher pesquisa = padrao.matcher(texto);

Mas agora como eu pego o valor que se enquadra na expressão?

ezmarques

Segue um jeito beeeeeem simples de resolver esse problema:

String str = "<span class=\"sb_count\" id=\"count\">1 a 10 de 144.000.000 resultados</span> ";
String num = str.split("<span class=\"sb_count\" id=\"count\">")[1].split("de ")[1].split(" resultados")[0];

Se o que você quer extrair é bem simples, não vejo necessidade de ficar criando regex. A menos que você esteja querendo fazer isso pra aprender :slight_smile:

[]s,

T

ezmarques:
Segue um jeito beeeeeem simples de resolver esse problema:

String str = "<span class=\"sb_count\" id=\"count\">1 a 10 de 144.000.000 resultados</span> ";
String num = str.split("<span class=\"sb_count\" id=\"count\">")[1].split("de ")[1].split(" resultados")[0];

Se o que você quer extrair é bem simples, não vejo necessidade de ficar criando regex. A menos que você esteja querendo fazer isso pra aprender :slight_smile:

[]s,

Ja tinha conseguido resolver, porém sua solução é muito mais simples :lol: .

Eu fiz assim:

Pattern padrao = Pattern.compile("de [0-9]*[.]?[0-9]*[.]?[0-9]*[.]?[0-9]* resultados</span>");
Matcher pesquisa = padrao.matcher(linha);
pesquisa.find();
String y = pesquisa.group();
System.out.println(y.replaceAll("\\D", ""));

Vou usar a sua solução, agora é só tirar os pontos.
Obrigado!!

caio.ribeiro.pereira

ThalesSilva a sua solução de Regex ainda tem falha, pois você apenas fechou os 3 pontos de cada intervalo de 3 numero do 144.000.000, pois e se surgir um resultado de 144.000.000.000.000.000?

A solução é mais simples ainda:

Pattern padrao = Pattern.compile("de [0-9.]* resultados");  
Matcher pesquisa = padrao.matcher(linha);
//Feito isso basta remover o "de " e " resultados" pois foi necessário para usá-lo com intervalo.
String res = pesquisa.group();
// No replace também é possível usar Regex.
// Nesse replace vc remove caracteres, espaços em branco e os pontos.
System.out.println(res.replace("[a-zA-Z.\s]*",""));
T

Caio, este valor é o resultados de páginas encontradas pelo bing, acredito que uma busca não retorne 1 tilhão de resultados, porém seu código garante que não ocorra erro, ficou muito bom.

Obrigado pela ajuda.

T

Double post

Criado 16 de março de 2012
Ultima resposta 17 de mar. de 2012
Respostas 8
Participantes 3