ruby - 将整数分配给字符串中的多个字符

标签 ruby string integer ord

我正在尝试为字符串中的多个字符分配一个整数。

def userinput(input)
  @user = input.upcase.delete('^A-Z').chars.each_slice(5).map(&:join)
end

=> userinput("This is test to convert multiple characters in a string")
=> ["THISI","STEST","TOCON", "VERTM", "ULTIP", "LECHA", "RACTE", "RSINA", "STRIN", "G"]

得到这个数组后,我想为字符串中的每个字符分配一个整数,所以我尝试了这样的事情......

=> @user.map {|ch| ch.ord - 'A'.ord + 1}

不幸的是,我只得到第一个字母对应的字母表整数。

=> [20, 19, 20, 22, 21, 12, 18, 18, 19, 7]

如果有人可以提示我如何分配每个字符串的其他 4 个剩余字母,以便输出类似于:

,我将不胜感激
=> ["ABCDE", "ABCDE"]
=> [12345, 12345]

最佳答案

将新数组中的每个字符串转换为字符数组,然后将每个字符转换回它们在字母表中的位置,就像您正在做的那样,然后将它们连接成一个字符串

@user = ["THISI","STEST","TOCON", "VERTM", "ULTIP", "LECHA", "RACTE", "RSINA", "STRIN", "G"]
@user.map(&:chars).map do |arr| 
  arr.inject("") do |str,ch| 
    str << (ch.ord - 'A'.ord + 1).to_s 
  end
end
 => ["2089199", "192051920", "201531514", "225182013", "211220916", "125381", "1813205", "18199141", "192018914", "7"]

关于ruby - 将整数分配给字符串中的多个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21663631/

相关文章:

android - 如何从 float 结果中删除小数?

ruby - Ruby 如何存储大数?

ruby - 选择边循环

python - 将 sslsocket python 代码转换为 ruby

java - 如何从 Java 中的 for 循环返回多个字符串?

python - 如何在 python 中将\t 视为常规字符串

ruby 纤维和 faye

ruby - 递归获取目录的大小

c++ - 如何将 CString 传递给格式字符串 %s?

java - args 变量中整数的最大和最大差