Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 切掉字符串的最后一个字符_Ruby_While Loop_Chop - Fatal编程技术网

Ruby 切掉字符串的最后一个字符

Ruby 切掉字符串的最后一个字符,ruby,while-loop,chop,Ruby,While Loop,Chop,我想制作一个程序,每次提取字符串并切掉最后一个字符,然后将结果打印到控制台: 输入字符串为Hello时,结果应为: Hello Hell Hel He H 这是我目前的代码: def test_string puts "Put your string in: " string = gets.chomp while string.length == 0 puts string.chop(/.$/) end end puts test_string 使用:

我想制作一个程序,每次提取字符串并切掉最后一个字符,然后将结果打印到控制台:

输入字符串为Hello时,结果应为:

Hello
Hell
Hel
He
H
这是我目前的代码:

def test_string
  puts "Put your string in: "
  string = gets.chomp


  while string.length == 0
    puts string.chop(/.$/)
  end


 end

 puts test_string
使用:


以下代码不修改原始字符串

string = gets.chomp
l = string.length
l.times do |i|
  puts string[0..(l-i-1)]
end

您还可以创建一个数组,将字符串填充N次,每次从中减去一个字符:

str = 'Hello'
Array.new(str.size) { |index| str[0...str.size - index] }.each { |str| p str }
# "Hello"
# "Hell"
# "Hel"
# "He"
# "H
您的前提是错误的:while string.length==0意味着只要字符串的长度为零,就永远不会执行循环。您需要while string.length!=0或until string.length==0或更简洁的until string.empty?您可以将负索引传递给[],从而避免临时变量:string.length.times{| i | puts string[0..-i-1]}。或者使用downto进行降序循环:string.length.downto{| l | puts string[0,l]}您可以避免拖尾,将p放在第一个块数组中。newstr.size{| index | p str[0…str.size-index]}。
str = 'Hello'
Array.new(str.size) { |index| str[0...str.size - index] }.each { |str| p str }
# "Hello"
# "Hell"
# "Hel"
# "He"
# "H