我在解决此问题时遇到问题。
类型列表
Road
Street
Bridge
Service Way
场景1
Word = Roadknight Street
应该匹配世界大街,因为只有大街可以匹配整个单词。并一分为二,因为类型列表中有一个匹配的单词
预期:
Roadknight
Street
场景2
Word = Road Train Road
应该只匹配最后一条路,并将单词分为两部分,因为类型列表中有匹配的单词
预期:
Road Train
Road
场景3
Word = McBridge Service Way
应该匹配服务方式,并将单词分为两个,因为类型列表中有匹配的单词
预期:
McBridge
Service Way
有什么方法可以像公路火车之路那样从右到左进行匹配。我需要从右边进行匹配,一旦有匹配项就停止
到目前为止,我使用match和一些正则表达式,但是没有用。
要匹配类型列表并获得Road
之类的街道类型
const typeObj = types.find(type => word.match(type.name));
还有这个
const typeObj = types.find(type => word.includes(type.name));
但是没有用,因为它甚至不匹配Roadknight
之类的完整单词,也不匹配Road
获取街道名称,例如Roadknight
const name = word.replace(new RegExp(`\\b${type}\\b/gi`), '');
不确定为什么
还有这个
const name = word.replace(type, '');
无法工作,因为它替换了所有匹配的类型。
希望任何人都可以帮助我
答案 0 :(得分:2)
要进行比赛,请尝试使用endsWith
:
const typeObj = types.find(type => word.endsWith(type.name));
然后使用substr
进行修整:
const x = word.substr(0, word.length - typeObj.length)