Ruby 2.3.4 - Как удалить подстроку строки? - PullRequest
0 голосов
/ 05 июля 2018

Например: там есть строка:

'Trump is great#Trump is great#'

Если я это сделаю:

'Trump is great#Trump is great#'.delete! 'Trump is great#'

Я получу:

''

Но я хочу получить:

'Trump is great#'

Итак, я хочу установить диапазон 'Trump is great#' и удалить эту подстроку по этому диапазону.

Как это сделать?

Или другие способы удаления подстроки?

Ответы [ 4 ]

0 голосов
/ 05 июля 2018

Если ваша строка всегда удваивается ...

str.gsub!(/^(.*)(?=\1$)/, '')
0 голосов
/ 05 июля 2018

Я могу сделать это! :

'Trump is great#Trump is great#'.slice! 'Trump is great#'
0 голосов
/ 05 июля 2018

Если шаблон вашей строки похож, вы можете сделать что-то вроде:

string.split('#').first + '#'

Вы также можете добавить пользовательский метод в строку Class:

class String
  def cut_pound
    split('#').first + '#'
  end
end

Итак, если у вас есть строки с одинаковым рисунком:

string1 = 'Wimbledon Open#Wimbledon Open#'
string2 = 'FIFA world cup#FIFA world cup#'

Можно ли позвонить:

string1.cut_pound # => "Wimbledon Open#"
string2.cut_pound # => "FIFA world cup#"

Вы можете удалить фунт, избавившись от + '#'

0 голосов
/ 05 июля 2018

Я думаю, что вы ищете sub!. В отличие от gsub! или delete!, он заменяет только первое совпадение.

'Trump is great#Trump is great#'.sub!('Trump is great#', '')
=> 'Trump is great#'

Поскольку он принимает регулярные выражения, вы можете использовать gsub, чтобы определить, сколько раз вы хотите, чтобы оно совпадало.

...