我有一个字符串,我想获得下划线之间的子串。
示例输入字符串:hold_sim_D_C3_1_one_aoi
所需的输出子串:sim,D,C3,1,one
答案 0 :(得分:1)
您可以将docValues与split
一起使用,以忽略第一个和最后一个字:
head, *words, tail = "hold_sim_D_C3_1_one_aoi".split('_')
p words
#=> ["sim", "D", "C3", "1", "one"]
如果您不需要head
或tail
,则可以使用以下任一项:
_, *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"]