Ответ 1
Почему бы просто не включить регулярное выражение в метод sub!
?
string.sub!(/^1/, '')
Как я могу удалить самую первую "1" из любой строки, если эта строка начинается с "1"?
"1hello world" => "hello world"
"112345" => "12345"
Я думаю о том, чтобы делать
string.sub!('1', '') if string =~ /^1/
но я задаюсь вопросом, куда лучше. Спасибо!
Почему бы просто не включить регулярное выражение в метод sub!
?
string.sub!(/^1/, '')
если вы собираетесь использовать регулярное выражение для соответствия, вы можете также использовать его для замены
string.sub!(%r{^1},"")
BTW, %r{}
является просто альтернативным синтаксисом для регулярных выражений. Вы можете использовать% r, за которым следует любой символ, например. %r!^1!
.
Осторожно, используя sub!(/^1/,'')
! Если строка не соответствует /^1/
, она вернет nil
. Вероятно, вы должны использовать sub
(без взрыва).
С Ruby 2.5 вы можете использовать delete_prefix или delete_prefix! для достижения этого читаемым образом.
В этом случае "1hello world".delete_prefix("1")
.
Подробнее здесь:
https://blog.jetbrains.com/ruby/2017/10/10-new-features-in-ruby-2-5/
https://bugs.ruby-lang.org/issues/12694
'invisible'.delete_prefix('in') #=> "visible"
'pink'.delete_prefix('in') #=> "pink"
N.B. вы также можете использовать это для удаления элементов из конца строки с помощью delete_suffix и delete_suffix!
'worked'.delete_suffix('ed') #=> "work"
'medical'.delete_suffix('ed') #=> "medical"
https://bugs.ruby-lang.org/issues/13665
Я ответил чуть подробнее (с эталонами) здесь: Что является самым простым способом удалить первый символ из строки?
Этот ответ может быть более оптимизирован: Какой самый простой способ удалить первый символ из строки?
string[0] = '' if string[0] == '1'
Я хотел бы опубликовать небольшое улучшение в отличном ответе Заха. ^
соответствует началу каждой строки в Ruby regex. Это означает, что в строке может быть несколько совпадений. Кэндзи спросил о начале строки, что означает, что они должны использовать это регулярное выражение:
string.sub!(/\A1/, '')
Сравните this - несколько совпадений с this - одно совпадение.