如果该字符串以"1"开头,如何从任何字符串中删除第一个"1"?
"1hello world" => "hello world" "112345" => "12345"
我正在考虑做
string.sub!('1', '') if string =~ /^1/
但我想知道有更好的方法.谢谢!
为什么不在sub!
方法中包含正则表达式?
string.sub!(/^1/, '')
从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"
注意,您也可以使用它来删除带有delete_suffix和delete_suffix的字符串末尾的项目!
'worked'.delete_suffix('ed') #=> "work" 'medical'.delete_suffix('ed') #=> "medical"
https://bugs.ruby-lang.org/issues/13665
我在这里回答了一些细节(带基准):从字符串中删除第一个字符的最简单方法是什么?
如果您打算使用正则表达式进行匹配,您也可以将其用于替换
string.sub!(%r{^1},"")
顺便说一句,这%r{}
只是正则表达式的替代语法.您可以使用%r,后跟任何字符,例如%r!^1!
.