【问题标题】: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 的响应中得到它
  • 响应是否有文字反斜杠后跟ts,或者响应是否有文字制表符?
  • @CertainPerformance 这样的例子:postimg.cc/vckr4hvC
  • 那么是文字反斜杠和t,还是制表符?

标签: javascript jquery vue.js split vue-component


【解决方案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://stackoverflow.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);

      【讨论】:

        猜你喜欢
        • 2020-04-11
        • 2019-09-19
        • 2013-10-19
        • 1970-01-01
        • 1970-01-01
        • 2011-08-04
        • 2019-02-06
        • 2023-04-06
        • 2012-10-23
        相关资源
        最近更新 更多