如何根据三个分隔符拆分字符串?
Posted
技术标签:
【中文标题】如何根据三个分隔符拆分字符串?【英文标题】:How can I split a string based on three delimiters? 【发布时间】:2020-04-18 09:50:23 【问题描述】:我的代码是这样的:
<template>
...
<p v-for="club in clubs">club</p>
...
</template>
<script>
export default
data: () => (
clubs: ''
),
mounted ()
let dataClub = "- City\\t - MU\\t - Liverpool\\t - Arsenal\\t - Chelsea"
// let dataClub = "- City\n - MU\n - Liverpool\n - Arsenal\n - Chelsea"
// let dataClub = "City;MU;Liverpool;Arsenal;Chelsea"
let dc = dataClub.split(/[\n;]/)
this.clubs = dc
</script>
dataClub 是动态的。可以用;
隔开,也可以用\n
隔开。除此之外还可以用\\t
符号分隔
如果有 3 个分隔符,我如何进行拆分?
我尝试let dc = dataClub.split(/[\n;\\t]/)
,但它不起作用
【问题讨论】:
这些数据的来源是什么?请注意,\\t
,带有 两个 反斜杠,不是制表符,而是带反斜杠的制表符。
@Tim Biegeleisen 我从 API 的响应中得到它
响应是否有文字反斜杠后跟t
s,或者响应是否有文字制表符?
@CertainPerformance 这样的例子:postimg.cc/vckr4hvC
那么是文字反斜杠和t
,还是制表符?
【参考方案1】:
您可以在正则表达式中使用|
(or
运算符)拆分多个字符串/字符。 sn-p 有一些示例,包括\\t
或\t
(最后一个是tab
字符)。
const splitData = str => str.split(/\\t|\n|;|\t/);
const dataClub1 = "- City\\t- MU\\t- Liverpool\\t- Arsenal\\t- Chelsea"; // \\t
const dataClub2 = `- City
- MU
- Liverpool
- Arsenal
- Chelsea`; // \n
const dataClub3 = "- City;- MU;- Liverpool;- Arsenal;- Chelsea"; // ;
const dataClub4 = `- City\t- MU\t- Liverpool\t- Arsenal\t- Chelsea`; // \t
console.log(splitData(dataClub1));
console.log(splitData(dataClub2));
console.log(splitData(dataClub3));
console.log(splitData(dataClub4));
.as-console-wrapper top: 0; max-height: 100% !important;
【讨论】:
【参考方案2】:参考这个答案: https://***.com/a/19313633/4298881
let separators = ['\\\\t', ';', '\\n'];
let regex = new RegExp(separators.join('|'), 'g');
dataClub.split(regex); // ["- City", " - MU", " - Liverpool", " - Arsenal", " - Chelsea"]
【讨论】:
【参考方案3】:虽然将分隔符放入数组中(dataClub.split(/['\t','\n',';']/) 也会拆分城市,因为正则表达式是其中之一。使正则表达式完全匹配分隔符会有所帮助。
let dataClub = "- City\\t - MU\\t - Liverpool\\t - Arsenal\\t - Chelsea";
const splittedDc = dataClub.split(/\\t|\n|;/);
console.log(splittedDc);
【讨论】:
以上是关于如何根据三个分隔符拆分字符串?的主要内容,如果未能解决你的问题,请参考以下文章