【发布时间】:2019-12-15 02:51:31
【问题描述】:
我正在尝试为基于各种字符串和运算符的拆分字符串创建一个正则表达式。我们如何做到这一点?
下面是我的代码:
var author;
var authorResult = [];
ByREGEX=/By|From|says\s|,/g;
author = authorByline.split(ByREGEX);
if(!author[1].trim()) {
author[1] = author[2].trim();
author[2] = '';
}
authorResult['name'] = author[1].trim();
if("2" in author){
authorResult['role'] = author[2].trim();
} else {
authorResult['role'] = '';
}
return authorResult;
以下是我的字符串,预计会输出:
From Bru Water(Delimeter:From) : Expected output(Author: Bru Water, Role:'')
By Matth Moo, Med Corresponde(Delimeter:'By' , ',') : **Expected output(Author: Matth Moo, Role:Med Corresponde)**
Analysis by Davidd Cross in London(Delimeter:'Analysis by' , 'in') : **Expected output(Author: Davidd Cross, Role:'')**
left and right, says Daavid Aaronovi(Delimeter:'says'): **Expected output(Author: Daavid Aaronovi, Role:'')**
From Dav Chart and Bo De(Delimeter:'From','and') : **Expected output(Author1: Dav Chart, Role1:'',Author2: Bo De, Role2:'')**
By Oliv Wrig, Poli Edit, and Franc Ellio, Politic Edit(Delimeter:'By','and'): **Expected output(Author1: Oliv Wrig, Role1:'Poli Edit',Author2: Franc Ellio, Role2:'Politic Edit')**
By RCAik Brbent(Delimeter:'By'): Expected output(Author: RCAik Brbent, Role:'')
From TomTY Knowl, Technolog Reporte(Delimeter:'From',','): **Expected output(Author: TomTY Knowl, Role:'Technolog Reporte')**
【问题讨论】:
-
你能在字符串中添加一个字符串分隔符吗?
-
嗨,nina,我已为所有字符串添加分隔符
-
我想我会创建一个策略模式并为每个返回作者和角色的案例实施策略。然后每行运行所有策略以产生一系列结果。在我看来,这将是一个更具可读性、可测试性和可维护性的解决方案。
if (_.includes(authorByline.toLowerCase(), 'from'))可能是其中一种策略的开始(使用 lodash)
标签: javascript regex