String.split函数不适用于某些文本

时间:2019-07-12 18:58:34

标签: javascript string

我在node.js中有字符串解析器。输入字符串来自电报通道。 现在,我对String.split函数有严重的疑问。 它适用于某些类型的文本,但不适用于某些其他文本。 当我收到电报中未处理的字符串时,我只是复制并再次发送到频道中。 在这种情况下,解析器会很好地处理它。 这个问题有什么建议吗?

        let teams = [];
        teamSeps =[" vs ", " v ", " - ", " x " ,"-", " -"];
        for(let i = 0; i< teamSeps.length; i++){
            teams = newTip.Match.toLowerCase().split(teamSeps[i]);
            if(teams.length === 2) break;
        }
        newTip.Home = teams[0].trim();
        newTip.Away = teams[1].trim();
        return;

1 个答案:

答案 0 :(得分:1)

您可以在单个alternation中使用单个正则表达式,而不必在-的两侧添加多个带有可选空格的选项。

/\s*-\s*|\s+(?:vs|v|x)\s+/
  • \s*-\s*:在-周围留有可选空间
  • \s+(?:vs|v|x)\s+:在vsvx周围至少留出一个空格(否则,如果存在xv在字符串中,它将拆分)

function customSplit(str) {
  return str.split(/\s*-\s*|\s+(?:vs|v|x)\s+/);
}

console.log(customSplit("Man United vs Man City"))
console.log(customSplit("France - Croatia"))
console.log(customSplit("Belgium-England"))
console.log(customSplit("Liverpool x Spurs"))