例如,给定一个字母(字符串),"a"
我想将其转换为相应的控制代码,即"\ca"
- 或等效地(以替代语法) - "\C-a"
, ?\ca
, "\x01"
,"\u0001"
我希望有一些“不错”、干净的方式来进行这种转换,但我想不通。
一个明显的第一次尝试可能是尝试类似的东西:
def convert_to_control_code(letter)
"\c#{letter}"
end
...但这不起作用,因为它总是会返回"\u0003{letter}"
("\u0003"
控制代码在哪里"\c#"
我目前的解决方案只是通过执行以下操作来“蛮力”它:
def convert_to_control_code(letter)
(0..255).detect { |x| x.chr =~ Regexp.new("\\c#{char}") }.chr
end
但是,我不禁觉得有一种“正确”的方式来做到这一点!
编辑:
这是我想出的另一个非蛮力解决方案,它似乎有效:
def convert_to_control_code(letter)
(letter.ord % 32).chr
end
这看起来好多了,但也很hacky!