如何使用Ruby从以下字符串“hold_sim_D_C3_1_one_aoi”中提取下划线之间的子串?

时间:2017-03-09 20:54:26

标签: ruby

我有一个字符串,我想获得下划线之间的子串。

示例输入字符串:hold_sim_D_C3_1_one_aoi

所需的输出子串:sim,D,C3,1,one

1 个答案:

答案 0 :(得分:1)

您可以将docValuessplit一起使用,以忽略第一个和最后一个字:

head, *words, tail = "hold_sim_D_C3_1_one_aoi".split('_')
p words
#=> ["sim", "D", "C3", "1", "one"]

如果您不需要headtail,则可以使用以下任一项:

_, *words, _ = "hold_sim_D_C3_1_one_aoi".split('_')

words = "hold_sim_D_C3_1_one_aoi".split('_')[1..-2]
当字符串包含少于2个下划线时,

words将为空数组。

由于您尝试使用正则表达式,因此可以使用splat assignment

"hold_sim_D_C3_1_one_aoi".scan(/(?<=_).*?(?=_)/)
#=> ["sim", "D", "C3", "1", "one"]