如何在使用lodash _.words时不将破折号作为分隔符?

7
我正在使用lodash将以某种任意分隔符提供给我的用户名字符串拆分成单独的用户名。我想使用_.words()将字符串拆分为单词,但要排除连字符,因为一些用户名中包含连字符。
示例:
_.words(['user1,user2,user3-adm'], RegExp)

我希望它能产生以下结果:
['user1', 'user2', 'user3-adm']

不要使用没有任何模式的_.words(array):

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

什么是正确的字符串/正则表达式用于实现此目的?

你是否在使用任何正则表达式匹配的模式? - emartinelli
2个回答

8

这个问题可以通过以下方法解决:

_.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] 相同)或 -(破折号)字符分隔。


有没有一种方法可以说“使用所有被认可的分隔符,除了破折号?” - reedog117
你需要说明你想要使用的分隔符或者不需要。也许我在回答中提到的内容可以帮助你。 - emartinelli

5

words接受一个正则表达式来匹配单词,不会对其进行分割,因此只需使用一个匹配除逗号以外的所有内容的正则表达式,例如:

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

你可以使用 split 来实现同样的功能。
result = wordlist.split(/,/);

https://lodash.com/docs#words


这个问题有点复杂,因为用户可以使用逗号、句点、空格或其他标点符号作为分隔符。我只想选择破折号来忽略其他符号。 - reedog117
1
用户可以使用逗号、点、空格或其他标点符号作为分隔符。 - Pedro Lobito

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接