Como pegar uma determinada Palavra usando o Split

Galera eu sei como se usa o split,

String[] nome = frase.split(",");

mais estou precisando pegar uma palavra dentro de uma frase, vou dar o exemplo de uma frase:

Frase: Estude. Hoje Online na; Alura: Programação

Se eu quiser colocar em um vetor só a palavra Online, como eu faço para separar ela?

Porque você iria querer um vetor só com a palavra Online? Se você só quer a palavra Online, basta saber se ela está na string ou não, certo?

int posicao = frase.indexOf("Online") // posicao eh o indice onde a palavra Online aparece na frase. Se for -1, frase nao contem a palavra Online
if (0 <= posicao) /* a palavra esta na frase */
else /* a palavra nao esta na frase */

Se quiser fazer buscas mais complexas, dá uma olhada em regular expressions.

Então no meu código eu estou lendo um arquivo em PDF e preciso separar várias informações que estão no meu arquivo e essas informações estão em várias partes do arquivo lido,

Então qual é a melhor forma de eu separar só essas palavras que estão em meu arquivo?

O que você quer dizer com “separar”? Você quer saber os locais aonde ocorrem certos termos, tipo um índice?

Seguindo o exemplo, com a palavra "Online". Se a gente chamar o programa com a String do arquivo e a query "Online", a resposta seria algo do tipo:

Ocorrencias:
Online: 1, 3, 5, 19, 32

onde esses números são os índices no texto onde essa palavra ocorre? É isso?

Ou você quer remover essas palavras do texto?

Ou é outra coisa completamente diferente e eu não entendi?

Vou te dar um exemplo, no meu arquivo que foi lido tem a palavra valor bruto e o valor, eu preciso pegar só esse valor, como seria para pegar só esse valor?

Aah, então você quer fazer pattern matching :slightly_smiling_face:

public static void main(String[] args) {
    String frase = "Bla bla bla bla bla valor bruto: 250.0 bla bla bla bla bla";
    Pattern pattern = Pattern.compile("valor bruto: (\\d+\\.\\d+)");
    Matcher matcher = pattern.matcher(frase);
    if (matcher.find()) {
        float valorBruto = Float.valueOf(matcher.group(1));
        System.out.printf("Achei o valor bruto: %.2f%n", valorBruto);
    } else {
 	    System.out.println("Nao achei o valor bruto"); 
    }
}  

Pra fazer isso tem que saber como usar regular expressions. Dá uma pesquisada na Internet, tem bastante material. Procura “expressões regulares em Java”

1 curtida

Ivbarbosa estou estudando aqui…usando o seu exemplo de frase, no meu caso o valor tem uma , ao invés de .
String frase = “Bla bla bla bla bla valor bruto: 250,0 bla bla bla bla bla”;

Vi que o . (ponto) busca qualquer caractere, mais ele não esta buscando…como resolver ?

O ponto na regex que eu postei está escapado, o que significa que ele só vai dar match no ponto literalmente. Tenta "\\d+,\\d+". Mas essa regex é muito ingênua, tem que ver qual o formado esperado de dados no seu PDF e fazer a regex certa.

esta dando erro dessa forma…

tentei dessa forma com ? e deu certo \d+?\d+:, só que no meu exemplo que as casas decimais não são 0 e sim 06, elas não aparecem, pq?

no meu arquivo em pdf esta dessa forma, e queria pegar o valor 1,06
Impostos 1,06 D

Mais alguém q pode me ajudar ? essa questão de expressão regular não ta dando certo não sei pq…

Ta osso isso aqui, no meu arquivo ta escrito assim: Impostos 1,06 D
Preciso pegar o valor 1,06

me ajudem ai por favor…

Cara, isso não ajuda em nada e não agrega.
Existem situações que parecem tranquilas, simples, porém, acabam por trazer muitas complicações, principalmente quando você não tem um conhecimento bom sobre as ferramentas que vai ou deve utilizar.
Em geral, estas situações não possuem uma resposta simples. É muito comum que você precise adaptar duas, três, cinco ideias diferentes para conseguir encontrar a solução.
Split funciona? Sim. Para isso, você precisa ter certeza dos pontos de quebra.
Regex funciona? sim. Para isso, você precisa entender como as expressões regulares funcionam.

Uma solução bemmmmmmmmmmmmmmmmmmmmmm arcaica seria o uso de indexOf e suas variantes, em conjunto com substrings e, por que não, split:
Supondo que o teu texto seja, apenas: “Impostos 1,06 D” (com espaços e tudo).

String linha = "Impostos 1,06 D";
String oValor = linha.substring(linha.indexOf("Impostos ") + "Impostos ".length(), linha.length());
String soOValor = oValor.substring(0, oValor.indexOf(" D"));
System.out.println("Total de impostos: " + soOValor);
// Total de impostos:  1,06

Obviamente, você vai precisar adaptar isso ao que você quer ler e, principalmente, a cada linha/valor que deseja.