如何使用Ruby中的拆分从数组中删除多个元素

时间:2018-08-15 19:47:29

标签: ruby

我有以下数组。

a is of value 5 before first if statement.
a=0 is not true. 
a is of value 0 after first if statement. 
a==0 is true. 
Program ended with exit code: 0

对于数组的每个元素,我希望提取等号后的数字的字符串表示形式,将其转换为整数并返回以下数组。

array =  ["5ms=208", "6ms=114", "7ms=95", "8ms=49", "9ms=38", "10ms=36",
          "11ms=35", "12ms=20", "13ms=24", "14ms=19", "15ms=15", "16ms=10", 
          "4550ms=0", "4600ms=0", "4650ms=0", "4700ms=0", "4750ms=0",
          "4800ms=0", "4850ms=0", "4900ms=0", "4950ms=0"]

我该怎么做?

3 个答案:

答案 0 :(得分:2)

"app/[some path]" (absolute)
"../../[some path]" (relative)

array.map { |s| s[/(?<=\dms=)\d+\z/].to_i } #=> [208, 114, 95, 49, 38, 36, 35, 20, 24, 19, 15, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0] 后面的 ,要求匹配项立即紧跟字符串(?<=\dms=),其中"\dms="是任意数字。 \d确保在字符串的其余部分中只有数字(\d\z是字符串的结尾锚),以便进行匹配。

答案 1 :(得分:1)

假设这些实际上是字符串,则可以执行以下操作:

array = ["5ms=208", "6ms=114", "7ms=95", "8ms=49", "9ms=38", "10ms=36", "11ms=35"]
split = array.map { |time| time.split('=')[1] }

结果将是:

["208", "114", "95", "49", "38", "36", "35"]

答案 2 :(得分:1)

给出您的字符串数组:

array = ["5ms=208", "6ms=114", "7ms=95", "8ms=49", "9ms=38", "10ms=36", "11ms=35", "12ms=20", "13ms=24", "14ms=19", "15ms=15", "16ms=10", "4550ms=0", "4600ms=0", "4650ms=0", "4700ms=0", "4750ms=0", "4800ms=0", "4850ms=0", "4900ms=0", "4950ms=0"]

这应该可以完成工作:

array.map { |element| element[/\d*\z/].to_i }
# Array of Integers
# => [208, 114, 95, 49, 38, 36, 35, 20, 24, 19, 15, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0]

希望您会有所帮助。