Ruby 保留单词顺序的单词中的反向字符
我试着在一个由多个单词组成的字符串中反转每个单词的单词。例如: “你好,有什么事吗”=>“我是史塔夫·普” 这是我得到的最接近的结果:Ruby 保留单词顺序的单词中的反向字符,ruby,Ruby,我试着在一个由多个单词组成的字符串中反转每个单词的单词。例如: “你好,有什么事吗”=>“我是史塔夫·普” 这是我得到的最接近的结果: def backwards(s) s.split.each do |y| y.reverse! end end 问题是它返回的是数组,而不是字符串。我尝试在反向之后添加join(“”)但这给了我一个错误 str.split(' ').map{|w| w.reverse}.join ' ' 清洁版: str.split.map(&:reverse)
def backwards(s)
s.split.each do |y| y.reverse! end
end
问题是它返回的是数组,而不是字符串。我尝试在反向之后添加join(“”)
代码>但这给了我一个错误
str.split(' ').map{|w| w.reverse}.join ' '
清洁版:
str.split.map(&:reverse).join ' '
清洁版:
str.split.map(&:reverse).join ' '
你应该做:
def backwards(str)
str.split.map(&:reverse).join(' ')
end
你应该做:
def backwards(str)
str.split.map(&:reverse).join(' ')
end
您想要加入每个的结果,而不是反向的结果代码>。你需要:
s.split.each {|y| y.reverse!}.join ' '
您想要加入每个的结果,而不是反向的结果代码>。你需要:
s.split.each {|y| y.reverse!}.join ' '
你几乎把它做好了。。。您必须对块的结果调用join(“”)
def backwards(s)
s.split.map { |word| word.reverse }.join(' ')
end
你几乎把它做好了。。。您必须对块的结果调用join(“”)
def backwards(s)
s.split.map { |word| word.reverse }.join(' ')
end
不知道为什么人们坚持使用split
s.gsub(/\w+/, &:reverse)
不知道为什么人们坚持使用split
s.gsub(/\w+/, &:reverse)
+我认为仍然使用map(&:reverse)
更好。也不需要将'
作为参数传递给split。我认为+1仍然使用map(&:reverse)
更好。也不需要将'
作为参数传递给split。当然,我不会想到,我喜欢它。@ukaszNiemier为了可读性,我认为使用gsub
更简单。它直接表达了这个概念:“颠倒词语”。你为什么要说“拆分成单词、反转和连接”?而且,它使用的方法更少,这也意味着它更直接。至于速度,使用split
的版本更快,因为您没有给它一个参数。如果你想要精细的控制(即,不仅仅是通过“
”分割),那么你需要做分割(/\W+/)
或者类似的事情,这使得分割比gsub
慢。当然是我想不到的,我喜欢。@ukaszNiemier为了可读性,我认为使用gsub
要简单得多。它直接表达了这个概念:“颠倒词语”。你为什么要说“拆分成单词、反转和连接”?而且,它使用的方法更少,这也意味着它更直接。至于速度,使用split
的版本更快,因为您没有给它一个参数。如果您想要精细控制(即,不只是通过“
”分割),那么您需要执行分割(/\W+/)
或类似操作,这使得分割
比gsub
慢。您为什么要这样做?听起来像是家庭作业。你为什么要这样做?听起来像是家庭作业。