使用 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 进行摇树?

仅当值不存在时才使用lodash push到数组?

仅当值不存在时才使用 lodash 推送到数组?

使用 lodash 在其他数组内的数组中查找一个值

如何使用 lodash _.filter() 过滤 Firestore 集合?

webpack 打包时到底如何组织js