javascript - 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;
解决方案
-
您可以使用带有一些交替的单个正则表达式,而不是在.
/\s*-\s*|\s+(?:vs|v|x)\s+/
\s*-\s*
:允许周围的可选空间-
\s+(?:vs|v|x)\s+
vs
: or周围至少允许有一个空格(否则,如果字符串中有v
or ,则会拆分)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"))
推荐阅读
- hadoop - 创建 Hive 表时出错
- java-8 - 对象列表的排序列表
- html5-canvas - 画布 toDataURL 不适用于 GIF 或 JPEG
- javascript - Firebase 函数从其他文件导入函数 - javascript
- php - 是否可以提交没有序列号的数组?
- java - BigDecimal - MathContext.DECIMAL64 与 MathContext.DECIMAL128
- java - JSON解析。字符串作为对象的 Json 数组
- python - 为什么```print```不能在for循环中工作并且变量在Python中没有改变?
- c# - NetworkStream 在服务器关闭时读取
- django - Facebook 登录/图形 API - 在 localhost 和 http(不是 https)上入门