Есть ли способ написать код, подобный этому, таким образом, чтобы он стал более понятным?Как я могу написать это, чтобы его было легче понять?
Это исключает первое слово предложения, но код не выглядит выразительным вообще.
Есть ли способ написать код, подобный этому, таким образом, чтобы он стал более понятным?Как я могу написать это, чтобы его было легче понять?
Это исключает первое слово предложения, но код не выглядит выразительным вообще.
irb(main):024:0> "this is a test".split.drop(1) * " "
=> "is a test"
Отредактировано для добавления:
Объяснение:
#split
По умолчанию разграничивает на пробельных.
#drop(1)
избавляется от первой записи.
* " "
делает то же самое, что и#join(" ")
.
код
a = a.split[1..-1] * " "
объяснение
String#split
«s параметр по умолчанию ""
Array * String
является псевдонимом для Array.join(String)
С другой стороны, я не уверен, что это более прозрачный тому, кто не знаком с рубином. Но любой, кто работал с строками Ruby немного, поймет, что происходит. И это намного чище, чем оригинальная версия.
Согласно just-my-correct-opinion «s ответ (который вы все должны голосовать вверх, а не у меня), если вы работаете рубин 1.9.1 (который вы должны быть, во всяком случае) или Ruby 1.8. 7, вы можете сделать:
a = a.split.drop(1) * " "
Не сокращайте себя слишком коротко. Единственная причина, по которой я знаю о '# drop' и' # drop_while', - это то, что я использовал их в Erlang и Haskell. Прежде чем я начал с этого, я тоже использовал кусочки. –
Что-то вроде следующих
a = a[a.index(' '), a.length-(a.index(' ')+1)]
Нет проверки хотя
Возможно, вы можете использовать '..' вместо', 'и -1 вместо своего последнего индекса? –
для кого-то, кто привык читать rexep это довольно чистый:
a = a.sub(/^\S+\s/, "")
YMMV
+1 довольно чистый. –
может быть, что делает процесс явно поможет
words = a.split
words.pop
a = words.join " "
Хороший ответ, но он удаляет первый элемент, а не последний. Используйте shift вместо pop. (regex answer по-прежнему остается лучшим) –
И если бы вы использовали это в течение некоторого кода вы можете создать методы String, и массив, чтобы сделать код читаемым. (также работает в 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
Я просматривал ответы, думая о публикации только этого! –
#drop, вот и все :) Мне действительно нужно начать работать в 1.9.1 больше. –
Это тоже в 1.8.7 (только что проверено). –
Этот, кажется, самый читаемый и краткий. Благодаря! – vikhyat