在ruby中用整数递增字符串

假设字符串是“abc”而用户输入是3则输出变为“def”.

应该通过用户输入将每个字符增加为整数值.

我写了一个代码,但它给出了一个错误.有没有其他方法可以做到这一点?

#!/usr/bin/ruby -w

puts "Enter the value of n";
$n=gets;
s = String.new("abc");
s.split("").each do |i|
    $j = 0;
    x = i;
    begin
         x.next;
         $j = $j + 1;
    end while $j < $n

    puts x;
end

解决方法

您的代码中需要添加几项内容

>而不是String.new,您只需在引号内添加您的字符串即可.
> str.split(“”)可以是str.chars.
> $j = $j 1可以是$j = 1.
>如果您在$j和$n之间进行比较,那么<<应该<.
>你不需要;除非你在一行写作.
>开始;结束虽然可以一会儿;结束

我想这可能是这样的:

n = gets.to_i
s = 'abc'
s.split('').each do |i|
  j = 0
  x = i
  while j < n
    x = x.next
    j += 1
  end
  puts x
end

但是您可以在字符串中的每个字符串上使用String#ord来返回它的序数,添加用户输入,然后使用String#chr获取该数字的ASCII字符:

# With n being the user's input as integer,in this case 3.
p 'abc'.chars.map { |char| (char.ord + n).chr }.join 
# "def"

添加了n = gets.to_i,如@Ganesh的评论中所述.

如果要寻找Caesar Cipher实现:

def foo(string,n)
  lower = ('a'..'z').to_a.join
  upper = ('A'..'Z').to_a.join
  string.tr(lower + upper,lower[n..-1] + lower[0...n] + upper[n..-1] + upper[0...n])
end

p foo('XYZ',1) # "YZA"
p foo('ABC',1) # "BCD"
p foo('ABC',3) # "DEF"

比较慢,但……

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...