是否存在以这样的方式编写这样的代码并使其更清晰的方法?
a = (a.split(" ")[1..-1]).join(" ")
删除句子的第一个单词但代码看起来并不富有表现力。
答案 0 :(得分:5)
<强>码强>
a = a.split[1..-1] * " "
<强>解释强>
String#split
的默认参数是“”
Array * String
是Array.join(String)
第二个想法,我不确定它对于不熟悉ruby的人本身是否更透明。但是任何使用过Ruby字符串的人都会理解正在发生的事情。它比原始版本更干净。
根据just-my-correct-opinion的答案(你们都应该投票而不是我的),如果你运行的是Ruby 1.9.1(无论如何应该是这样)或Ruby 1.8.7,你可以做:
a = a.split.drop(1) * " "
答案 1 :(得分:5)
对于习惯阅读rexep的人来说这很干净:
a = a.sub(/^\S+\s/, "")
因人而异
答案 2 :(得分:5)
irb(main):024:0> "this is a test".split.drop(1) * " "
=> "is a test"
已编辑添加:
说明:
默认情况下
#split
分隔空格。
#drop(1)
摆脱了第一个条目。
* " "
与#join(" ")
的作用相同。
答案 3 :(得分:3)
可能会使流程明确有用
words = a.split
words.pop
a = words.join " "
答案 4 :(得分:2)
如果你在整个代码中使用它,你可能想要创建 String和Array中的方法使您的代码可读。 (也适用于1.8.6)
class String
def words
split
end
end
class Array
def but_first
self[1..-1]
end
def to_sentence
join(' ')
end
end
str = "And, this is a sentence"
puts str.words.but_first.to_sentence
答案 5 :(得分:1)
如下所示
a = a[a.index(' '), a.length-(a.index(' ')+1)]
不检查