Seguinte, achei um contador de palavras simples e fácil, mas ainda nao ficou claro com a função de .trim().split()
publicclasscontador{publicstaticvoidmain(Stringargs[]){Scannerinput=newScanner(System.in);System.out.println("Digite uma frase: ");Stringfrase=input.nextLine();Stringpalavras[]=frase.trim().split(" ");System.out.println("Numero de palavras: "+palavras.length);}}
Pelo o que pesquisei, e vi, nesse caso após a frase ser digitada, ele é "separado" dos espaços (trim) e é cortado em palavras (split), criando um array e no final ele só da o tamanho do array, assim tendo a contagem de palavras. ou entendi errado?
muito obrigado
O método trim() remove o espaço em branco no ínicio e no final de uma string. Após feito isso, é chamado o método split() que retorna um array de String separando as palavras por espaço ou qualquer outro delimitador que vc preferir.
Sobre o tamanho do array, vc está certo.
T
TintinSt
ou seja se eu escrevo uma frase qualquer: “Oi eu estou aprendendo java.”
o trim ira “cortar” a frase, fazendo ela ter exatamente esse tamanho, sem espacos antes e depois (".Oi eu estou aprendendo java.") pontos simbolizam espacos “cortados”
e o split ira cortar as palavras e fazer um array (".Oi. .eu. .estou. .aprendendo. .java.")
criando um array de no caso tamanho 5
e dando o tamanho do array temos o resultado.
Seria isso?
obrigado
M
macario1983
TintinSt:
ou seja se eu escrevo uma frase qualquer: “Oi eu estou aprendendo java.”
o trim ira “cortar” a frase, fazendo ela ter exatamente esse tamanho, sem espacos antes e depois (".Oi eu estou aprendendo java.") pontos simbolizam espacos “cortados”
e o split ira cortar as palavras e fazer um array (".Oi. .eu. .estou. .aprendendo. .java.")
criando um array de no caso tamanho 5
e dando o tamanho do array temos o resultado.
Seria isso?
obrigado
Isso mesmo, como você afirmou
O trim retira espaços em branco da esquerda e direita da String
O split cria um array mediante a uma condição para quebra da sua String
ViniGodoy
Detalhe é que aí são duas funções, não uma só.
O trim() é aplicado sobre a String, e por sua vez retorna uma String.
O split() é um método chamado na String de retorno. Ele retorna um array de Strings.
RafaelCassau
Somente ilustrando o uso do trim(); em uma String
publicclassTesteTrim{publicstaticvoidmain(String[]args){StringfraseComEspaco=" java java ";System.out.println("Tamanho Frase com espaço: "+fraseComEspaco.length());System.out.println("Tamanho Frase sem espaço: "+fraseComEspaco.trim().length());}}
Saida:
Tamanho Frase com espaço: 14
Tamanho Frase sem espaço: 10
nesse exemplo os 2 espaços antes do inicio da frase e os dois espaços após o termino da frase são cortados pelo método trim() e o espaço que esta entre as palavras “java” é ignorado pelo trim(), permitindo assim que você use o caractere " " como delimitador para que o split corte a String e como o Vini Godoy disse, qualquer Obejeto da classe String é imutavel sendo assim toda essa manipulação não altera a String que você está manipulando e sim retorna uma nova String com o resultado esperado.
caso sua duvida tenha sido resolvida por favor altere o titulo do topico para [RESOLVIDO]
T
TintinSt
obrigado estendi.
Mas surgiu mais uma dúvida e aproveitando o tópico…
se coloco 2 espacos no meio exemplo “Oi (2 espacos) estou (3 espacos) aprendendo (2 espacos) java”
ele le o espaco como uma palavra.
tem algum jeito de tirar isso?
tava pensando em algo pouco diferente com trim, indexOf e substring… mas nao consegui chegar a um código ainda…
o método split aceita uma regular expression como argumento… se você colocar split(" +"), ele corta caso haja um ou mais espaços.
T
TintinSt
obrigado, funcionou!!
di.magdaleno
Para facilitar a legibilidade do código pode ser interessante usar um caractere predefinido (meta caractere) ao invés de um espaço em branco: String[] palavras = frase.trim().split("\\s+");Nesse caso, o caractere pré-definido é o “\s” que é o mesmo que um espaço em branco. A barra invertida que precede o meta caractere de espaço serve para que ele não seja identificado como um caractere de escape (como “\n”) e o sinal de + (adição) após o meta caractere diz que você espera uma ou mais repetições desse caractere. Ou seja, o método split() vai separar as palavras da sua string sempre que encontrar um ou mais espaços em branco.