blank - replace javascript
¿Cómo puedo dividir una cadena por espacios en blanco e ignorar los espacios en blanco iniciales y finales en una matriz de palabras usando una expresión regular? (4)
Normalmente uso el siguiente código en JavaScript para dividir una cadena por espacios en blanco.
"The quick brown fox jumps over the lazy dog.".split(//s+/);
// ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."]
Por supuesto, esto funciona incluso cuando hay varios caracteres de espacio en blanco entre palabras.
"The quick brown fox jumps over the lazy dog.".split(//s+/);
// ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."]
El problema es cuando tengo una cadena que tiene espacios en blanco iniciales o finales, en cuyo caso la matriz de cadenas resultante incluirá un carácter vacío al principio y / o al final de la matriz.
" The quick brown fox jumps over the lazy dog. ".split(//s+/);
// ["", "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog.", ""]
Es una tarea trivial eliminar tales caracteres vacíos, pero prefiero ocuparme de esto dentro de la expresión regular si es posible. ¿Alguien sabe qué expresión regular podría usar para lograr este objetivo?
En lugar de dividir en secuencias de espacios en blanco, puede hacer coincidir cualquier secuencia que no sea de espacios en blanco:
" The quick brown fox jumps over the lazy dog. ".match(//S+/g)
No elegante como otros códigos pero muy fácil de entender:
countWords(valOf)
{
newArr[];
let str = valOf;
let arr = str.split(" ");
for (let index = 0; index < arr.length; index++)
{
const element = arr[index];
if(element)
{
this.newArr.push(element);
}
}
this.NumberOfWords = this.newArr.length;
return this.NumberOfWords;
}
Si está más interesado en los bits que no son espacios en blanco, puede hacer coincidir los espacios en blanco en lugar de dividir en espacios en blanco.
" The quick brown fox jumps over the lazy dog. ".match(//S+/g);
Tenga en cuenta que lo siguiente devuelve null
:
" ".match(//S+/g)
Así que el mejor patrón para aprender es:
str.match(//S+/g) || []
" The quick brown fox jumps over the lazy dog. ".trim().split(//s+/);