使用Ruby将每两个字符反转一个字符串
我想用Ruby反转每两个字符的字符串。
输入:
"0123456789abcdef"
我期望的输出:
"efcdab8967452301"
我不确定这是否是最好的方法:
"0123456789abcdef".scan(/../).reverse.join == "efcdab8967452301"
"0123456789abcdef".gsub(/../, &:reverse).reverse # => "efcdab8967452301"
你可以试试:
"0123456789abcdef".chars.each_slice(2).to_a.reverse.join
我喜欢所有的解决方案,特别是@ sawa的,但现在,六个小时之后,提出不同的东西是一个挑战。 为了多样性,我提供了一种使用成对替代的方法。 这是破坏性的,所以我首先制作一个字符串的副本。
码
str = "0123456789abcdef" s = str.dup (0...s.size/2).step(2) { |i| s[i,2], s[-i-2,2] = s[-i-2,2], s[i,2] } s #=> "efcdab8967452301"
说明
让
enum = (0...s.size/2).step(2) #=> #
我们可以看到枚举的内容:
enum.to_a #=> [0, 2, 4, 6]
字符串
s #=> "0123456789abcdef"
每次调用块后如下:
i = 0: "ef23456789abcd01" i = 2: "efcd456789ab2301" i = 4: "efcdab6789452301" i = 6: "efcdab8967452301"
"0123456789abcdef".split('').each_slice(2).to_a.reverse.flatten.join('') => "efcdab8967452301"
- 设置rake-pipeline以与Google App Engine一起使用
- 无法加载此类文件 – libxml_ruby for Windows
- Rails button_to没有路由匹配{:action =>“complete”,:controller =>“dashboard”,:name =>“Order”}
- 我可以操作yaml文件并再次写出来
- Rake执行多个参数
- Ruby中的catch和throw在哪里有用?
- 通过Form使用Rolify以及Devise和Cancan动态添加角色
- Ruby – 无法在45秒内绑定到锁定端口7054(Selenium :: WebDriver :: Error :: WebDriverError)
- 一个类和Ruby中该类的单例有什么区别?