Tengo una función para eliminar siempre la segunda palabra de una oración.
public cleanMessage(message) { let cleanedMessage: any = message.split(' '); cleanedMessage.splice(1, 1); cleanedMessage = cleanedMessage.join(' '); return cleanedMessage; } cleanMessage('Hello there world') // outputs 'Hello world'¿Hay una forma más limpia de hacer esto?
Si solo está buscando acortarlo, puede usar expresiones regulares:
(?<=\S)\s\S+ eliminará la segunda palabra de la cadena
(?<=\S) crea una búsqueda retrospectiva de una palabra\s\S+ selecciona un espacio con una palabra despuésA continuación, puede eliminar este espacio + palabra con:
public cleanMessage(message) { return message.replace(/(?<=\S)\s\S+/, ''); }Regexp es de hecho más corto y, en mi opinión, más fácil de leer siempre que use operadores más simples.
string.replace(/^(\S+)\s+\S+/, '$1') ^ | desde el principio de la cadena |
(\S+) | tomar y recordar no espacios - 1ra palabra |
\s+ | seguido de espacios |
\S+ | y otra palabra |
$1 | reemplazar con la primera palabra recordada |
Lo que escribiste ya está lo más limpio posible.
Podrías escribirlo un poco más corto tal vez como:
public cleanMessage = (message) => message .split(' ') .filter((word, i) => i !== 1) .join(' ');