使用 JavaScript 拆分具有多个分隔符的字符串

目录

Split a String with multiple Separators using JavaScript

  1. 在 JavaScript 中使用多个分隔符拆分字符串
  2. 使用 replaceAll 拆分具有多个分隔符的字符串
  3. 使用拆分和连接拆分具有多个分隔符的字符串

在 JavaScript 中使用多个分隔符拆分字符串

使用该String.split()方法拆分具有多个分隔符的字符串,例如str.split(/[-_]+/).

可以向该split方法传递一个包含多个字符的正则表达式,以使用多个分隔符拆分字符串。

索引.js
const str = 'a-b_c-d'; const arr = str.split(/[-_]+/); console.log(arr); // 👉️ ['a', 'b' , 'c', 'd']
如果您希望避免使用正则表达式,请向下滚动到使用该replaceAll()方法的示例。

String.split ()
方法接受一个分隔符,并在每次出现所提供的分隔符时将字符串拆分为一个数组。

String.split()方法采用以下 2 个参数:

姓名 描述
分隔器 描述每个拆分应该发生的位置的模式。
限制 一个整数,用于指定要包含在数组中的子字符串数的限制。

我们向该String.split()方法传递了一个正则表达式。

正斜杠标记/ /正则表达式的开始和结束。

方括号[]称为字符类,与提供的字符之一相匹配。
索引.js
const str = 'a-b_c-d'; const arr = str.split(/[-_]+/); console.log(arr); // 👉️ ['a', 'b' , 'c', 'd']

在示例中,我们匹配连字符或下划线。

加号+与前面的项目匹配一次或多次。

在示例中,它与连字符或下划线匹配一次或多次。

您可以通过在方括号之间添加需要匹配的字符来调整分隔符。

以下代码示例由一个空格和一个点分隔。

索引.js
const str = 'a.b c.d'; const arr = str.split(/[.\s]+/); console.log(arr); // 👉️ ['a', 'b', 'c', 'd']

特殊字符\s匹配空格(空格、制表符和换行符)。

您还可以使用竖线|(或)来简化您的正则表达式,例如a|b匹配ab

索引.js
const str = 'a.b c.d'; const arr = str.split(/\.|\s/); console.log(arr); // 👉️ ['a', 'b', 'c', 'd']
|我们在正则表达式中使用了竖线(或)符号。是一个特殊字符,因此我们必须使用反斜杠将其转义。 .

以下字符:+,-,(,),*,?,.在正则表达式中具有特殊含义,必须
使用反斜杠进行转义才能被解释为文字字符。

此代码示例实现与使用字符类的正则表达式相同的结果[]

如果您在阅读正则表达式时需要帮助,请查看

MDN 提供的
正则表达式速查表。

它包含一个表格,其中包含每个特殊字符的名称和含义以及示例。

如果您希望避免使用正则表达式,请使用
String.replaceAll()方法。

使用 replaceAll 拆分具有多个分隔符的字符串

这是一个两步过程:

  1. 使用该String.replaceAll()方法将分隔符替换为单个统一字符。
  2. 使用String.split()方法在统一字符上拆分字符串。
索引.js
const str = 'one.two three.four'; const arr = str.replaceAll('.', '$') .replaceAll(' ', '$') .split('$'); console.log(arr); // 👉️ ['one', 'two', 'three', 'four']

通过用相同的字符替换所有出现的多个分隔符,我们得到一个带有单个分隔符的字符串,我们可以在split()
不使用任何正则表达式的情况下使用该方法。

起初这有点不直观,但$在此示例中美元符号并不重要,它可以是任何字符,例如逗号或连字符。
索引.js
const str = 'one.two three.four'; const arr = str.replaceAll('.', '-') .replaceAll(' ', '-') .split('-'); console.log(arr); // 👉️ ['one', 'two', 'three', 'four']

我们所关心的只是将分隔符统一为一个字符,我们可以将其传递给方法split()

如果你必须经常这样做,你可以定义一个可重用的函数。

索引.js
function splitMultiple(str, separators) { let replacedStr = str for (const separator of separators) { replacedStr = replacedStr.replaceAll(separator, '$') } return replacedStr.split('$') } const str = 'one.two three.four,five'; // 👇️ [ 'one', 'two', 'three', 'four', 'five' ] console.log(splitMultiple(str, ['.', ' ', ',']))

splitMultiple函数将一个字符串和一个分隔符数组作为参数,并在每次出现分隔符时将字符串拆分为一个数组。

我们在函数中使用了相同的方法:

  1. 用统一字符(美元符号)替换所有出现的分隔符。
  2. 在统一字符(美元符号)上拆分字符串。

# 使用拆分和连接拆分具有多个分隔符的字符串

或者,您可以将调用链接到String.split()Array.join()
方法。

索引.js
// ✅ split on each dot and space const str = 'a.b c.d'; const split3 = str.split('.') .join('$') .split(' ') .join('$') .split('$'); console.log(split3); // 👉️ ['a', 'b', 'c', 'd']

对该方法的第一次调用split()在每个点上拆分字符串。

然后我们用美元符号分隔符连接字符串。

索引.js
const str = 'a.b c.d'; // 👇️ "a$b c$d" console.log(str.split('.').join('$'));

下一步是用空格分开并再次用美元符号连接。

我们实质上是用美元符号替换点和空格,因此我们可以将两个分隔符统一为 1 并使用单个分隔符拆分。

这是一个两步过程:

  1. 用单个字符替换所有点和空格。
  2. 按单个字符拆分字符串。

我不太喜欢使用正则表达式,但是,在这种情况下,我发现正则表达式方法是最直观的。

The replaceAll() method is also easy to read, but it’s a bit more indirect and
takes a second to understand.

# Additional Resources

You can learn more about the related topics by checking out the following
tutorials: