He podido encontrar ejemplos de cómo eliminar la última palabra de una cadena, pero en este caso intento eliminar las últimas 3 palabras de una cadena. He intentado esto ajustando algunas de las respuestas que he encontrado para eliminar una sola palabra, pero ninguna me ha dado los resultados esperados.
Cadena de ejemplo Highest ranked in the states
Me gustaría que mi valor de retorno sea Highest ranked
Aquí hay algunos fragmentos de código de lo que he intentado:
let myString = "Highest ranked in the states";
myString = myString.substring(2, myString.lastIndexOf(" "));
console.log(myString)
let myString2 = "I want to remove the last word";
let mySplitResult2 = myString2.split(" ");
let lastWord = mySplitResult2[mySplitResult2.length-3]
console.log(lastWord)
Con el ajuste del método de subcadena a (2, myString.lastIndexOf(" "));
terminó eliminando las dos primeras letras de mi oración y solo eliminó la palabra states
como "invitado clasificado en el"
Al ajustar el método .split () a la longitud -3, simplemente devuelve la palabra in
en lugar de in the states
3 respuestas
Aquí hay un lindo y fácil de leer:
const remove3words = words => words.split(" ").slice(0, -3).join(" ");
console.log(remove3words("Highest ranked in the states"));
console.log(remove3words("Exactly three words"));
Puede generalizarlo fácilmente a n
palabras de la siguiente manera:
function remove_n_words(words, n) {
return n === 0 ? words : words.split(" ").slice(0, -n).join(" ");
}
// Test the function
console.log(remove_n_words("Highest ranked in the states", 0));
console.log(remove_n_words("Highest ranked in the states", 3));
console.log(remove_n_words("Highest ranked in the states", 100));
Vea los comentarios para obtener una explicación usando split and splice
let myString = "Highest ranked in the states";
//split the str using blank space between each word and add to new variable
let str = myString.split(" ");
//get the length
let num = str.length;
//splice the array removing the last three values with the number - 3
let newStr = str.splice(0, num - 3);
let displayText = '';
//back into string
newStr.forEach(function(value){
displayText += value + ' ';
});
display.textContent = displayText;
<div id="display"></div>
let myString = "Highest ranked in the states";
myString = myString.split(' ')
myString = myString.splice(myString.length-5,2)
myString = myString.join(' ')
console.log(myString)
Nuevas preguntas
javascript
Para preguntas sobre la programación en ECMAScript (JavaScript / JS) y sus diversos dialectos / implementaciones (excepto ActionScript). Incluya todas las etiquetas relevantes en su pregunta; por ejemplo, [node.js], [jquery], [json], etc.