[英]Ruby String ASCII operation?
是否可以像在Cpp中一样在Ruby中执行一些ASCII选项?
char *s = "test string";
for(int i = 0 ; i < strlen(s) ; i++) printf("%c",s[i]);
// expected output: vguv"uvtkpi
如何在Ruby中实现类似的目标? 通过一些研究,我认为String.each_byte
在这里可能会有所帮助,但是我正在考虑使用高级编程(例如Array.map
)直接转换字符串,而不使用显式的for
循环。
我要解决的任务:参考此页面 ,我正在尝试使用Ruby解决它,似乎需要逐字符转换才能应用于字符串。
密切注意Challenge中问题所给出的提示,然后使用String的tr
方法:
"test string".tr('a-z', 'c-zab')
# => "vguv uvtkpi"
解决该问题的另一个提示是,您只应处理字符。 标点和空格应单独放置。
在Python Challenge中对字符串使用上面的tr
,您将明白我的意思。
使用String#each_char
和String#ord
和Integer#chr
:
s = "test string"
s.each_char.map { |ch| (ch.ord + 2).chr }.join
# => "vguv\"uvtkpi"
s.each_byte.map { |b| (b + 2).chr }.join
# => "vguv\"uvtkpi"
或String#next
:
s.each_char.map { |ch| ch.next.next }.join
# => "vguv\"uvtkpi"
您可以使用代码点或each_codepoint方法,例如:
old_string = 'test something'
new_string = ''
old_string.each_codepoint {|x| new_string << (x+2).chr}
p new_string #=> "vguv\"uqogvjkpi"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.