使用 lodash _.words 时如何不分隔破折号/连字符?
Posted
技术标签:
【中文标题】使用 lodash _.words 时如何不分隔破折号/连字符?【英文标题】:How to not separate on dash/hyphen when using lodash _.words? 【发布时间】:2015-07-27 20:08:39 【问题描述】:我正在使用 lodash 将提供给我的用户名拆分为带有某种任意分隔符的字符串。我想使用 _.words() 将字符串拆分为单词,连字符除外,因为一些用户名包含连字符。
例子:
_.words(['user1,user2,user3-adm'], RegExp)
我希望它屈服:
['user1', 'user2', 'user3-adm']
不是这个(_.words(array) 没有任何模式):
['user1', 'user2', 'user3', 'adm']
什么是正确的字符串/正则表达式来实现这一点?
【问题讨论】:
您是否使用任何模式进行正则匹配? 【参考方案1】:最初的情况可以这样解决:
_.words(['user1,user2,user3-adm'], /[^,]+/g);
结果:
["user1", "user2", "user3-adm"]
[已编辑]
如果你想添加更多的分隔符,像这样添加:
_.words(['user1,user2,user3-adm.user4;user5 user7'], /[^,.\s;]+/g);
结果:
["user1", "user2", "user3-adm", "user4", "user5", "user7"]
最后一个 sn-p 将分开:
逗号 (,
),
点 (.
),
空格 (\s
),
分号 (;
)
您也可以使用:
_.words(['user1,user2,user3-adm.user4;user5 user7*user8'], /[-\w]+/g)
结果:
["user1", "user2", "user3-adm", "user4", "user5", "user7", "user8"]
在这种情况下,您可以添加您不想作为分隔符。在这里它将被每个不是\w
(与[_a-zA-Z0-9]
相同)或-
(破折号)的字符分开
【讨论】:
有没有办法说“使用除破折号以外的所有可识别的分隔符?” 你需要说出你想用什么作为分隔符。也许我在回答中包含的内容可以帮助您。【参考方案2】:words
接受正则表达式来匹配单词并且不拆分它们,因此,只需使用匹配除逗号之外的所有内容的正则表达式,即:
_.words(['user1,user2,user3-adm'], /[^,]+/g);
或者,您可以使用split
。
result = wordlist.split(/,/);
https://lodash.com/docs#words
【讨论】:
它比这要复杂一些,因为用户可以使用逗号、点、空格或其他标点符号作为分隔符。我只想选择要忽略的破折号。 “用户可以使用逗号、点、空格或其他标点符号作为分隔符”我在你的问题上看不懂。以上是关于使用 lodash _.words 时如何不分隔破折号/连字符?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 webpack 在使用“import * as _”时不会对 lodash 进行摇树?