目录
Split a String with multiple Separators using JavaScript
在 JavaScript 中使用多个分隔符拆分字符串
使用该String.split()
方法拆分具有多个分隔符的字符串,例如str.split(/[-_]+/)
.
可以向该split
方法传递一个包含多个字符的正则表达式,以使用多个分隔符拆分字符串。
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()
方法传递了一个正则表达式。
正斜杠标记/ /
正则表达式的开始和结束。
[]
称为字符类,与提供的字符之一相匹配。const str = 'a-b_c-d'; const arr = str.split(/[-_]+/); console.log(arr); // 👉️ ['a', 'b' , 'c', 'd']
在示例中,我们匹配连字符或下划线。
加号+
与前面的项目匹配一次或多次。
在示例中,它与连字符或下划线匹配一次或多次。
以下代码示例由一个空格和一个点分隔。
const str = 'a.b c.d'; const arr = str.split(/[.\s]+/); console.log(arr); // 👉️ ['a', 'b', 'c', 'd']
特殊字符\s
匹配空格(空格、制表符和换行符)。
您还可以使用竖线|
(或)来简化您的正则表达式,例如a|b
匹配a
或b
。
const str = 'a.b c.d'; const arr = str.split(/\.|\s/); console.log(arr); // 👉️ ['a', 'b', 'c', 'd']
|
我们在正则表达式中使用了竖线(或)符号。点是一个特殊字符,因此我们必须使用反斜杠将其转义。 .
以下字符:+,-,(,),*,?,.
在正则表达式中具有特殊含义,必须
使用反斜杠进行转义才能被解释为文字字符。
此代码示例实现与使用字符类的正则表达式相同的结果[]
。
如果您在阅读正则表达式时需要帮助,请查看
MDN 提供的正则表达式速查表。
它包含一个表格,其中包含每个特殊字符的名称和含义以及示例。
如果您希望避免使用正则表达式,请使用
String.replaceAll()方法。
使用 replaceAll 拆分具有多个分隔符的字符串
这是一个两步过程:
- 使用该
String.replaceAll()
方法将分隔符替换为单个统一字符。 - 使用
String.split()
方法在统一字符上拆分字符串。
const str = 'one.two three.four'; const arr = str.replaceAll('.', '$') .replaceAll(' ', '$') .split('$'); console.log(arr); // 👉️ ['one', 'two', 'three', 'four']
通过用相同的字符替换所有出现的多个分隔符,我们得到一个带有单个分隔符的字符串,我们可以在split()
不使用任何正则表达式的情况下使用该方法。
$
在此示例中美元符号并不重要,它可以是任何字符,例如逗号或连字符。const str = 'one.two three.four'; const arr = str.replaceAll('.', '-') .replaceAll(' ', '-') .split('-'); console.log(arr); // 👉️ ['one', 'two', 'three', 'four']
我们所关心的只是将分隔符统一为一个字符,我们可以将其传递给方法split()
。
如果你必须经常这样做,你可以定义一个可重用的函数。
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
函数将一个字符串和一个分隔符数组作为参数,并在每次出现分隔符时将字符串拆分为一个数组。
我们在函数中使用了相同的方法:
- 用统一字符(美元符号)替换所有出现的分隔符。
- 在统一字符(美元符号)上拆分字符串。
# 使用拆分和连接拆分具有多个分隔符的字符串
或者,您可以将调用链接到String.split()
和Array.join()
方法。
// ✅ 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()
在每个点上拆分字符串。
然后我们用美元符号分隔符连接字符串。
const str = 'a.b c.d'; // 👇️ "a$b c$d" console.log(str.split('.').join('$'));
下一步是用空格分开并再次用美元符号连接。
这是一个两步过程:
- 用单个字符替换所有点和空格。
- 按单个字符拆分字符串。
我不太喜欢使用正则表达式,但是,在这种情况下,我发现正则表达式方法是最直观的。
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:
- Split a String on Capital Letters using JavaScript
- Split a Full Name into First and Last in JavaScript
- Split a String and get First or Last Array Element in JS
- Split on the Last Occurrence of a String in JavaScript
- Split a Number into an Array in JavaScript
- Split a String removing any Empty Elements in JavaScript
- Split a String at a specific Index using JavaScript
- How to Split a String by Newline in JavaScript
- How to Split a String by a Regex in JavaScript
- How to Split a string by Spaces in JavaScript
- Split a String only on the First Occurrence of a Character
- Split a String by Special Characters in JavaScript
- 在 JavaScript 中每 N 个字符拆分一个字符串