我在ruby中有一个字符串,其初始字符为数字,最后一个字符始终为字母。一些示例是:2C, 1P, 45H, 135D.
我想得到一个有2个对象的数组,首先是数字,第二个是字符。
Eg: for 2C, array would be [2, C]
for 45H, array would be [45, H]
for 135D, array would be [135, D]
我尝试了my_string[/(\d+)([A-Z])$/].split(//, 1)
,但它在数组中给了我一个完整的字符串。像[“2C”],[“45H”]
我在这里错过了什么吗?
答案 0 :(得分:4)
我不得不做一些快速的谷歌搜索,看看如何使用Ruby的分裂,但这是你想要的方式:
print '2C'.split(/(?<=\d)(?=[A-Z])/);
// ["2", "C"]
expression通过做后卫((?<=...)
)和前瞻((?=...)
)来发挥作用。这意味着我们将匹配左侧有数字的点和右侧的字母。
答案 1 :(得分:1)
您可以使用scan
:
'150D'.scan(/\d+|\w/)
# => ["150", "D"]