如何在使用lodash _.words时不分隔破折号/连字符

How to not separate on dash/hyphen when using lodash _.words?

本文关键字:分隔 破折号 连字符 words lodash      更新时间:2023-09-26

我使用lodash将输入到字符串中的用户名与某种任意分隔符分开。我想使用_.words()将字符串分割成单词,除了连字符,因为有些用户名包含连字符。

的例子:

_.words(['user1,user2,user3-adm'], RegExp)

我想让它屈服:

['user1', 'user2', 'user3-adm']

not this (_.words(array) without any pattern):

['user1', 'user2', 'user3', 'adm']

什么是正确的字符串/RegExp来实现这一点?

初始情况可以这样解决:

_.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"]

最后一段代码将以:

分隔

逗号(,),点(.),空格('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]相同)或-(破折号)

words接受一个正则表达式来匹配单词,而不分割它们,因此,只需使用一个匹配除逗号以外的所有内容的正则表达式,即:

_.words(['user1,user2,user3-adm'], /[^,]+/g);

或者,您可以使用split

result = wordlist.split(/,/);

https://lodash.com/docs单词