Menu
CoddyTech

使用范围切片数组

本课属于 Coddy Ruby 学习旅程的“基础知识”单元。第 69 课,共 88 课。

有时,你需要提取数组的一部分,而不是逐个访问元素。Ruby 允许你使用范围切片数组,从而创建一个只包含你指定元素的新数组。

要使用范围切片数组,请将范围放在方括号内:

numbers = [10, 20, 30, 40, 50]
slice = numbers[1..3]

puts slice  # 输出:20, 30, 40

范围 1..3 包含索引为 1、2 和 3 的元素。请记住,数组索引从 0 开始,所以索引 1 是第二个元素。

你也可以使用三点范围(...)来排除最后一个索引:

letters = ["a", "b", "c", "d", "e"]
slice = letters[0...3]

puts slice  # 输出:a, b, c

这里,0...3 包含索引 0、1 和 2,但不包括索引 3。

负索引也适用于范围。它们从数组末尾开始计数,其中 -1 表示最后一个元素:

colors = ["red", "green", "blue", "yellow"]
slice = colors[1..-1]

puts slice  # 输出:green, blue, yellow

这会提取从索引 1 到最后一个元素的所有内容。当你想跳过第一个元素,但不知道数组的长度时,这很有用。

challenge icon

挑战

简单

读取两个输入:

  1. 一行由逗号分隔的整数(例如,10,20,30,40,50,60,70)
  2. 格式为 start..end 或 start...end 的范围说明(例如,2..5 或 1...4)

将第一个输入拆分为整数数组。然后使用第二个输入中的范围切片数组,并将切片部分中的每个元素单独打印在一行上。

范围输入会使用两个点(..)来包含结束索引,或使用三个点(...)来排除结束索引。

例如,如果输入是 10,20,30,40,50,60,70 和 2..5,输出应为:

30
40
50
60

如果输入是 5,10,15,20,25,30 和 0...3,输出应为:

5
10
15

如果输入是 100,200,300,400,500 和 1..-1,输出应为:

200
300
400
500

如果输入是 a,b,c,d,e,f 和 -3..-1,输出应为:

d
e
f

亲手试试

# 读取以逗号分隔的值
input_values = gets.chomp

# 读取范围说明
range_spec = gets.chomp

# TODO: 在下方编写代码
# 1. 将 input_values 拆分为数组
# 2. 解析 range_spec,确定起始位置、结束位置,以及使用 .. 还是 ...
# 3. 使用合适的范围截取数组
# 4. 将截取部分的每个元素分别打印在单独的一行
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Ruby 在线编译器