获取 JavaScript 中特定字符之前的子字符串

在 JavaScript 中获取特定字符之前的子字符串

Get the Substring before a specific Character in JavaScript

使用该substring()方法获取特定字符之前的子字符串。

substring方法将返回一个新字符串,其中包含指定字符之前的字符串部分。

索引.js
const str = 'one two_three four'; const before_ = str.substring(0, str.indexOf('_')); console.log(before_); // 👉️ 'one two'

我们使用
String.substring()
方法获取特定字符之前的子字符串。

我们传递给该方法的参数是:

  1. 起始索引– 要包含在新字符串中的第一个字符的索引。
  2. 结束索引– 上升到但不包括该索引。
JavaScript 索引是从零开始的,因此字符串中的第一个字符的索引为0,最后一个字符的索引为 str.length - 1

我们使用String.indexOf
方法来获取字符的索引。

索引.js
const str = 'one two_three four'; console.log(str.indexOf('_')); // 👉️ 7

如果该字符不包含在字符串中,则该indexOf方法返回
-1

在这种情况下,该substring方法将被调用(0, -1)并返回一个空字符串,因为该substring方法将负值视为您传递了0

获取特定字符最后一次出现之前的子串

如果您的字符串包含该字符的多次出现,并且您需要获取直到该字符最后一次出现的子字符串,请改用该
String.lastIndexOf()方法。

索引.js
const str = 'one two_three_four'; const before_ = str.substring(0, str.lastIndexOf('_')); console.log(before_); // 👉️ 'one two_three'

String.lastIndexOf ()方法返回字符最后一次出现的索引。

索引.js
const str = 'one two_three_four'; console.log(str.indexOf('_')); // 👉️ 7 console.log(str.lastIndexOf('_')); // 👉️ 13

该字符串包含多次出现的下划线,因此我们使用该方法获取字符串中最后一次出现下划线字符之前的部分。

如果该字符不包含在字符串中,则lastIndexOf方法返回。-1

或者,您可以使用该String.split()方法。

使用 String.split() 获取特定字符之前的子字符串

这是一个三步过程:

  1. 使用该String.split()方法在字符上拆分字符串。
  2. 访问索引处的数组元素0
  3. 索引处的数组元素0是特定字符之前的字符串部分。
索引.js
const str = 'one two_three four'; const before_ = str.split('_')[0]; console.log(before_); // 👉️ 'one two'

我们使用
String.split()
方法根据提供的分隔符将字符串拆分为子字符串数组。

索引.js
const str = 'one two_three four'; // 👇️ ['one two', 'three four'] console.log(str.split('_'));

索引处的数组元素0包含指定字符之前的子字符串。

如果该字符不包含在字符串中,则该String.split()方法返回一个包含单个元素(整个字符串)的数组。

指数。
const str = 'one two three four'; // 👇️ ['one two three four'] console.log(str.split('_'));

您可以使用该String.includes()方法在调用该方法之前检查字符串是否包含特定字符String.split()

索引.js
const str = 'one two three four'; let before = ''; if (str.includes('_')) { before = str.substring(0, str.lastIndexOf('_')); } console.log(before); // 👉️ ''

如果字符包含在字符串中,则String.includes()方法返回,否则返回。truefalse

您也可以使用该Array.shift()方法而不是使用字符串索引。

索引.js
const str = 'one two_three four'; const before_ = str.split('_').shift(); console.log(before_); // 👉️ 'one two'

我们使用方法String.split()在指定字符上将字符串分割成数组。

索引.js
const str = 'one two_three four'; // 👇️ [ 'one two', 'three four' ] console.log(str.split('_'));

最后一步是使用该Array.shift()方法移除并返回第一个数组元素。

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: