【问题标题】:Using .split on a string in an array在数组中的字符串上使用 .split
【发布时间】:2014-03-17 14:15:02
【问题描述】:

对于像 12,34,56;78,91;50,60; 这样的输入

我想用分号分隔字符串,然后用逗号分隔这些字符串

例如:

puts "Input: "
input = gets.chomp
s_array = input.split(";")
for i in 0..s_array.size
    puts s_array[i].split(",")
end

它会使用puts 成功打印,但出现错误后

undefined method 'split' for nil:NilClass <NoMethodError>

这个错误的原因是什么?

【问题讨论】:

  • 这不是您想要的,但您可能会感兴趣:"12,34,56;78,91;50,60;".split(/[,;]/) #=&gt; ["12","34","56","78","91","50","60"]

标签: ruby arrays split


【解决方案1】:

.. 更改为...

for i in 0...s_array.size

使用.. 创建一个范围是包容性的,而... 不是,例如

1..5  # => 1,2,3,4,5
1...5 # => 1,2,3,4

所以变量i 会溢出数组,在你的情况下,如果数组大小为 5,array_s[5] 将为空。

【讨论】:

  • @user1763861,那么你应该接受这个问题是正确的。
【解决方案2】:

更红宝石的方法是:

input.split(";").each { |x| puts x.split (",") }

您应该使用Array#each,使用for 并不难懂,并且在极少数情况下需要for 循环来代替ruby 中的each,并且for 关键字代表@987654327 @即使被使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-13
    • 2011-09-20
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    相关资源
    最近更新 更多