ruby substring bug?

时间:2009-08-16 15:58:01

标签: ruby arrays substring

我试图找到一串数字的第一和第二半,如果长度为奇数,则会忽略中心数字 即 input =“102” first_half =“1” second_half =“2”

使用此代码

i = gets
first_half=i[0..(i.length / 2 - 1).floor]
second_half = i[i.length -first_half.length)..i.length - 1]
print "#{first_half}\n#{second_half}"

然而,对于此输入,输出是 10(“\ n”) 2

然而,代码在irb中正常工作。任何人都可以看到我的问题是什么?

3 个答案:

答案 0 :(得分:2)

i = gets

返回末尾带换行符的字符串,即你的字符串是"102\n",因此长度为4。

答案 1 :(得分:1)

使用i=gets.chomp

答案 2 :(得分:0)

i = gets.chomp
first_half=i[0..(i.length / 2 - 1).floor]
second_half = i[(i.length - first_half.length).. i.length - 1]
print "#{first_half}\n#{second_half}"

iano:Desktop ian$ ruby stack.rb 
102
1
2

你的问题(虽然有一些小的语法错误)是你必须选择(删除输入字符串末尾的“\ n”字符)。