我正在使用Ruby 2.4和Rails 5.我在一行中有一系列索引
[5,8,10]
如何获取上述数组和字符串,并形成由上述索引拆分的字符串的anotehr数组?如果字符串是
,则为实例abcdefghijklmn
并基于以上索引拆分它,我将有一个包含以下字符串的数组
abcde
fgh
ij
klmn
答案 0 :(得分:2)
试试这个
str = "abcdefghijklmn"
positions = [5, 8, 10]
parts = [0, *positions, str.size].each_cons(2).map { |a, b| str[a...b] }
# => ["abcde", "fgh", "ij", "klmn"]
或者,
如果这些位置是恒定的并且在运行时之前已知(例如,如果它们是电话号码或信用卡的格式),那么只需使用正则表达式
str.match(/(.....)(...)(..)(.*)/).captures
# => ["abcde", "fgh", "ij", "klmn"]
答案 1 :(得分:0)
这将完成工作
str = "abcdefghijklmn"
arr_1 = [5, 8, 10]
arr_2, prev = [], 0
(arr_1.length + 1).times do |x|
if arr_1[x] == nil then arr_1[x] = str.size end
arr_2 << str[prev..arr_1[x] -1]
prev = arr_1[x]
end
p arr_2
---------------------------------------
Program Run Output
["abcde", "fgh", "ij", "klmn"]
---------------------------------------
我希望这有助于