2012-02-17 21 views
33

Me gustaría saber cómo puedo eliminar la última palabra de la cadena usando JavaScript?cómo eliminar la última palabra de la cadena usando JavaScript

Por ejemplo, la cadena es "Quiero eliminar la última palabra".

Después de usar la eliminación, la cadena en el cuadro de texto mostrará "Quiero eliminar el último"

He visto cómo eliminar el último carácter mediante la función de subcadena, pero debido a que la última palabra puede ser diferente cada vez. ¿Hay alguna manera de contar cuántas palabras se necesitan para eliminar en JavaScript?

Gracias

Respuesta

71
var str = "I want to remove the last word."; 
var lastIndex = str.lastIndexOf(" "); 

str = str.substring(0, lastIndex); 

acceder al último espacio y luego consiguen subcadena.

+0

Gran solución. Intenté hacerlo con una línea usando Regex. –

+0

Esta es una gran solución. Funciona para mí, y voy a mejorarlo. –

3

Uso split función

var myString = "I want to remove the last word"; 
var mySplitResult = myString.split(" "); 
var lastWord = mySplitResult[mySplitResult.length-1] 
+0

Este también me sirve para recuperar la última palabra de la cadena. Gracias –

+2

No cumple con los requisitos en la pregunta. – Antoine

0

Usted puede igualar la última palabra después de un espacio que no tiene caracteres de texto que le sigue.

word=/s+\W*([a-zA-Z']+)\W*$/.exec(string); 
if(word) alert(word[1]) 
+0

No creo que realmente funcione. Obtengo 'word [1] == 't'' –

4

Una forma sencilla de hacerlo sería utilizar lastIndexOf() y substr() métodos de JavaScript:

var myString = "I want to remove the last word"; 
myString = myString.substring(0, myString.lastIndexOf(" ")); 
5

Usted puede hacer una simple expresión regular de este modo:

"I want to remove the last word.".replace(/\w+[.!?]?$/, '') 
>>> "I want to remove the last" 

Encontrar el último índice para " " es probablemente más rápido sin embargo. Esto es solo menos código.

0

La respuesta corta a esta pregunta sería la siguiente,

var str="I want to remove the last word".split(' '); 
var lastword=str.pop(); 
console.log(str.join(' ')); 
+0

Su cadena es demasiado larga para el ejemplo: P – Drew

+0

Es fácil de entender ... – indago

+0

Es una lástima que no responda la pregunta. – trincot

1

Siguiendo answer por Amir Raminfar, me encontré con esta solución. En mi opinión, es mejor que la respuesta aceptada, porque funciona incluso si tiene un espacio al final de la cadena o con idiomas (como el francés) que tienen espacios entre la última palabra y el signo de puntuación.

"Je veux supprimer le dernier mot !".replace(/[\W]*\S+[\W]*$/, '') 
"Je veux supprimer le dernier" 

despoja también el espacio (s) y los signos de puntuación antes de la última palabra, como la OP implícitamente requiere.

Paz.

0

¡Engañando solo por diversión, esta es una manera divertida e indignante de hacerlo!

"I want to remove the last word.".split(" ").reverse().slice(1).reverse().join(" ") 
Cuestiones relacionadas