我在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;
答案 0 :(得分:1)
您可以在单个alternation中使用单个正则表达式,而不必在-
的两侧添加多个带有可选空格的选项。
/\s*-\s*|\s+(?:vs|v|x)\s+/
\s*-\s*
:在-
周围留有可选空间\s+(?:vs|v|x)\s+
:在vs
或v
或x
周围至少留出一个空格(否则,如果存在x
或v
在字符串中,它将拆分)
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"))