在 Python 中,我可以去除字符串中的空格、换行符或随机字符,例如
>>> '/asdf/asdf'.strip('/')
'asdf/asdf' # Removes / from start
>>> '/asdf/asdf'.strip('/f')
'asdf/asd' # Removes / from start and f from end
>>> ' /asdf/asdf '.strip()
'/asdf/asdf' # Removes white space from start and end
>>> '/asdf/asdf'.strip('/as')
'df/asdf' # Removes /as from start
>>> '/asdf/asdf'.strip('/af')
'sdf/asd' # Removes /a from start and f from end
但是 Ruby 的 String#strip方法不接受任何参数。我总是可以退回到使用正则表达式,但是有没有一种方法/方法可以在不使用正则表达式的情况下从 Ruby 中的字符串(前后)中去除随机字符?
您可以使用正则表达式:
"atestabctestcb".gsub(/(^[abc]*)|([abc]*$)/, '')
# => "testabctest"
当然你也可以把它变成一个方法:
def strip_arbitrary(s, chars)
r = chars.chars.map { |c| Regexp.quote(c) }.join
s.gsub(/(^[#{r}]*)|([#{r}]*$)/, '')
end
strip_arbitrary("foobar", "fra") # => "oob"
我是一名优秀的程序员,十分优秀!