目录
Remove the Last Word from a String using JavaScript
使用 JavaScript 从字符串中删除最后一个单词
要从字符串中删除最后一个单词,请使用lastIndexOf()
方法获取字符串中最后一个空格的索引。然后使用该substring()
方法获取删除最后一个单词的字符串的一部分。
function removeLastWord(str) { const lastIndexOfSpace = str.lastIndexOf(' '); if (lastIndexOfSpace === -1) { return str; } return str.substring(0, lastIndexOfSpace); } console.log(removeLastWord('Hello World')); // 👉️ Hello console.log(removeLastWord('hello')); // 👉️ hello console.log(removeLastWord('one two three')); // 👉️ one two
我们创建了一个可重用的函数来从字符串中删除最后一个单词。
我们做的第一件事是使用
String.lastIndexOf
方法获取字符串中最后一个空格的索引。
该lastIndexOf
方法返回字符串中最后一次出现的子字符串的索引。如果子字符串不包含在字符串中,则该方法返回
-1
。
为了涵盖字符串仅包含单个单词(无空格)的情况,我们检查该lastIndexOf
方法是否返回-1
,如果返回,我们返回字符串,而不删除任何单词。
if
语句。function removeLastWord(str) { const lastIndexOfSpace = str.lastIndexOf(' '); // 👇️ remove this if you want to delete single words too // if (lastIndexOfSpace === -1) { // return str; // } return str.substring(0, lastIndexOfSpace); }
最后一步是使用
String.substring
方法获取字符串中没有最后一个单词的部分。
我们将以下参数传递给该substring
方法:
- start index – 要包含在新字符串中的第一个字符的索引
- 结束索引– 上升到但不包括该索引
另一种方法是使用slice
和join
方法。
使用 String.split() 从字符串中删除最后一个单词
从字符串中删除最后一个单词:
- 调用
split()
字符串上的方法以获取包含字符串中单词的数组。 - 使用该
slice()
方法获取删除最后一个单词的数组的一部分。 - 调用将
join()
数组连接成字符串的方法。
function removeLastWord(str) { const words = str.split(' '); if (words.length === 1) { return str; } return words.slice(0, -1).join(' '); } console.log(removeLastWord('Hello World')); // 👉️ Hello console.log(removeLastWord('hello')); // 👉️ hello console.log(removeLastWord('one two three')); // 👉️ one two
我们在每个空格上拆分字符串以获得包含字符串中单词的数组。
// 👇️ ['hello', 'world'] console.log('hello world'.split(' '))
我们还检查字符串是否包含1
单词0
,如果包含则返回。
然后我们使用
Array.slice
方法获取数组中最后一个单词被省略的部分。
我们将以下参数传递给该slice
方法:
- start index – 开始提取的索引(从零开始)。
- 结束索引– 提取值直到但不包括该索引。负索引表示距数组末尾的偏移量。
-1
表示向上,但不包括数组的最后一个元素(单词)。最后一步是使用
Array.join
方法将数组连接成一个字符串。
该join
方法采用的参数是一个分隔符,就像split
方法一样,因此我们再次传递一个空格作为分隔符。
从字符串中删除最后 2 个(或 N 个)单词#
从字符串中删除最后 2 个单词:
- 使用该
split()
方法将字符串拆分为单词数组。 - 使用该
slice
方法获取不包括最后 2 项的数组。 - 使用该
join()
方法连接带有空格分隔符的单词。
const str = 'one two three four'; const withoutLast2Words = str.split(' ').slice(0, -2).join(' '); console.log(withoutLast2Words); // 👉️ 'one two'
我们使用
String.split
方法将字符串拆分为子字符串数组。
const str = 'one two three four'; // 👇️️ ['one', 'two', 'three', 'four'] console.log(str.split(' '));
下一步是使用
Array.slice
方法获取数组中没有最后 2 个元素(单词)的部分。
我们将以下参数传递给该slice
方法:
- start index – 要包含在新数组中的第一个元素的索引(从零开始)
- end index – 提取元素直到但不包括该索引。负索引
-2
意味着“上升到但不包括数组的最后 2 个元素”
-2
和是一样的。我们指示该方法向上移动,但不包括数组的最后 2 个元素。 array.length - 2
slice
const str = 'one two three four'; console.log(str.split(' ').slice(0, -2)); // 👉️ ['one', 'two']
最后一步是使用
Array.join
方法将单词连接回字符串。
该join
方法采用的唯一参数是一个分隔符,我们为其提供了一个空格。
结果是一个不包含原始字符串的最后 2 个单词的新字符串。
const str = 'one two three four'; const withoutLast2Words = str.split(' ').slice(0, -2).join(' '); console.log(withoutLast2Words); // 👉️ 'one two'