Рубиновый способ превратить «abcd» в «a b c d» (например, заполнить каждый символ пробелами) - PullRequest
1 голос
/ 16 октября 2011

Я вижу, как удалить лишние пробелы, но не вижу простого способа (кроме ручной итерации), чтобы превратить строку «счастливый» в «счастливый» (с последним пробелом или без него, не имеет значения)?

Ответы [ 2 ]

6 голосов
/ 16 октября 2011

Регулярное выражение было бы простым путем:

'happy'.gsub(/./) { |m| m + ' ' }
# "h a p p y "

Или еще несколько:

'happy'.gsub(/./) { |m| m + ' ' }.strip # No trailing space.
'happy'.gsub(/./) { $& + ' ' }          # Trailing space, uses global $& variable.
'happy'.gsub(/./) { $& + ' ' }.strip    # Ues global variable, no trailing space.
'happy'.chars.to_a.join(' ')            # No regex, no trailing space.
'happy'.split('').join(' ')             # No regex, no trailing space.

Я вроде как split / join один сам.

4 голосов
/ 16 октября 2011

Мне было любопытно, поэтому я сравнил каждый из ответов мю (100 000 раз каждый) ... ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-darwin10.8.0]:

'happy'.gsub(/./) { |m| m + ' ' }.strip
  2.160000   0.010000   2.170000 (  2.176177)

'happy'.gsub(/./) { $& + ' ' }
  2.220000   0.010000   2.230000 (  2.264467)

'happy'.gsub(/./) { $& + ' ' }.strip
  2.480000   0.010000   2.490000 (  2.490261)

'happy'.chars.to_a.join(' ')
  1.040000   0.000000   1.040000 (  1.055694)

'happy'.split('').join(' ') 
  1.350000   0.010000   1.360000 (  1.354991)   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...