1
resposta

Problemas com / s+/ - aula 2

Estou com problema para que funcione "/ s+/ " . Todo o código funciona exceto esse comando. tentei ver se estava escrevendo errado ou algo do tipo, mas não estava. Já não sei como resolver isto. Não aparece erro, nem nada do tipo. Só não funciona o comando "/ s+/ ".

var frase = $(".frase").text(); // .text(); pega o texto de dentro da class instanciada
var numPala = frase.split(" ").length;
var tamanhoFrase = $("#tamanho-frase").text(numPala);



var campo = $(".campo-digitacao");

campo.on("input", function(){

  var conteudo = campo.val(); 
  var quantidadeCarac = conteudo.length;
  var quantidadePalavra = conteudo.split(/\S+/).length -1;
  $("#contador-palavras").text(quantidadePalavra);
  $("#contador-caracteres").text(quantidadeCarac);

});

1 resposta

Olá Jhonatan!

Poderia explicar qual erro exatamente está dando? O que não está funcionando?

Gostaria também de dizer que existe diferença entre \S+ e o \s+ (Maiúsculo != Minúsculo).

A expressão regular \S+ corresponde a qualquer caracter que não seja um espaço em branco (espaços, tabulações, quebras de linha).

Quando usamos nossa expressão [Um dois três quatro cinco] nosso JS irá enxergar:

[{vazio} Um {vazio} dois {vazio} três {vazio} quatro {vazio} cinco {vazio}].

O \S+ irá retirar da String todos os caracteres que NÃO sejam vazios.

Ou seja, ele retorna um array igual a ["", " ", " ", " ", " ", ""].

Quando usamos o .length no nosso array ele nos retorna 6.

Quando subtraímos -1 ficamos com a quantidade correta de palavras (5).

Já a expressão regular \s+ corresponde a qualquer espaço em branco (espaços, tabulações, quebras de linha).

O \s+ irá retirar da String todos os espaços vazios, deixando somente as palavras.

Ou seja ele retorna um array igual a ["um", "dois", "três", "quatro", "cinco"].

Quando usamos o .length no nosso array ele nos retorna 5.

Quando subtraímos -1 ficamos com a quantidade incorreta de palavras (4).

Caso isso tenha sido esse seu problema espero ter resolvido. Caso contrário aguardo sua resposta sobre um detalhamento do problema! :D

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software