Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida sobre a expressão regular (/S+/)

Notei que ao escrever no código essa expressão regular (/s+/) o " s " em minúsculo, o contador do campo de digitação conta uma palavra a menos, e ao colocar o " S " em maiúsculo, é contado certo.

Ex 1:

Com " s " minúsculo:

Um dois três quatro cinco

21 Caracteres

4 Palavras

var qtdPalavras = conteudo.split(/\s+/).length - 1;

Ex 2:

Quando coloco o " S " maiúsculo, ele volta a contar certinho.

Um dois três quatro cinco

21 Caracteres

5 Palavras

var qtdPalavras = conteudo.split(/\S+/).length - 1;

Se puderem me explicar o porquê que isso acontesse ficaria grata!

3 respostas

Boa noite, Amanda!

Quando você procura com o "s" minúsculo, ele retorna todos os espaços existentes na frase pelo split. Como no final da frase não tem o espaço, ele considera o split até o final da quarta palavra.

Já com o "S" maiúsculo, ele retorna tudo que não é espaço, ou seja, todas as palavras da frase.

Espero que tenha ajudado!

solução!

Olá Amanda!

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).

Espero ter ajudado! :D

Nossa, explicações excelentes obrigada pela a ajuda gente! :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