首页 > 解决方案 > String.split 函数无法正常处理某些文本

问题描述

我在 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;

标签: javascriptstring

解决方案


-您可以使用带有一些交替的单个正则表达式,而不是在.

/\s*-\s*|\s+(?:vs|v|x)\s+/
  • \s*-\s*:允许周围的可选空间-
  • \s+(?:vs|v|x)\s+vs: or周围至少允许有一个空格(否则,如果字符串中有vor ,则会拆分)xxv

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"))


推荐阅读