Попытка удалить пробелы из строки RUBY - PullRequest
0 голосов
/ 21 декабря 2018

, как говорится в заголовке, я пытаюсь написать функцию для удаления пробелов.Это то место, где я до сих пор, но, похоже, я что-то упускаю.

def remove(x)
  if x.include? " "
    x.gsub!(/ /,"")
  end
end

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Я думаю, вы, вероятно, проверяете вывод функции, верно?

У вас есть что-то вроде

remove('1q')
=> nil

Это потому, что метод remove ничего не возвращаетесли места не найденоПросто убедитесь, что вы вернули измененное значение.

def remove(x)
  if x.include? " "
    x.gsub!(/ /,"")
  end
  x  # this is the last executed command and so will be the return value of the method
end

И теперь вы увидите

 remove('1q')
=> "1q"

Обратите внимание, что ваш метод фактически мутирует объект, поэтому вам не нужнопроверить, что возвращено, вы можете просто проверить переменную с исходным значением.Do ...

test_value = 'My carrot'
remove(test_value)

p test_value
=> "Mycarrot"

Наконец, как уже указывалось, вам не нужно заключать его в предложение if, gsub! будет работать только на любых пробелах, которые он найдет и будетв противном случае ничего не делать.

def remove(x)
  x.gsub!(' ', '')
  x
end

Обратите внимание, что вам по-прежнему нужно возвращать переменную x, как будто gsub! ничего не делает, возвращает nil

Метод gsub (с другой стороны) не изменяется, он всегда будет возвращать новое значение, которое будет строкой с любыми сделанными заменами, поэтому вы можете сделать

def remove(x)
  x.gsub(' ','')
end

И это всегда будет возвращать значение независимо от того,произошла замена ... но исходный объект не изменится.(Возвращаемое значение будет иметь другое значение object_id)

0 голосов
/ 21 декабря 2018

проще, вы можете сделать:

def remove_blank_spaces(str)
  str.delete(' ')
end

Другой вариант:

def remove_blank_spaces(str)
  str.gsub(' ', '')
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...