【发布时间】:2014-03-06 23:35:26
【问题描述】:
我正在尝试为字符串中的多个字符分配一个整数。
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]
【问题讨论】:
-
为什么这个
ch.ord - 'A'.ord + 1计算?为什么ABCDE是 12345?基于什么逻辑你正在做字符到整数映射? -
抱歉,这可能有点断章取义。这个想法是将字母表中的相应数字分配给一个字母。这就是为什么 ABCDE 是 12345。
-
12345可以翻译成ABCDE,LCDE,AWDE。哪一个是对的?这个问题的答案是:我们不知道。您的编码有缺陷:不是prefix-free。 -
@p11y:所以你是说如果我不使用无前缀,我将无法向后转换它?
-
这正是问题所在。