使用 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,如果是,我们返回字符串,而不删除任何单词。

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 索引 – 要包含在新字符串中的第一个字符的索引
  • stop 索引 – 上升到但不包括该索引

另一种方法是使用 slice 和 join 方法。

从字符串中删除最后一个单词:

  1. 对字符串调用 split() 方法以获取包含字符串中单词的数组。
  2. 使用 slice() 方法获取删除最后一个单词的数组的一部分。
  3. 调用 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 索引 – 开始提取的索引(从零开始)。
  • stop 索引 – 提取值直到但不包括该索引。 负索引表示距数组末尾的偏移量。

最后一步是使用 Array.join 方法将数组连接成一个字符串。

join 方法采用的参数是一个分隔符,就像 split 方法一样,所以我们再次传递一个空格作为分隔符。