在Python中,我们可以使用字符串的.strip()
方法来删除所选字符的前导或尾随出现:
>>> print " (Removes (only) leading & trailing brackets & ws ) ".strip(" ()")
'Removes (only) leading & trailing brackets & ws'
我们如何在Ruby中执行此操作? Ruby的strip
方法不带参数,只删除空格。
答案 0 :(得分:13)
ruby中没有这样的方法,但你可以很容易地定义它:
def my_strip(string, chars)
chars = Regexp.escape(chars)
string.gsub(/\A[#{chars}]+|[#{chars}]+\z/, "")
end
my_strip " [la[]la] ", " []"
#=> "la[]la"
答案 1 :(得分:3)
"[[ ] foo [] boo ][ ]".gsub(/\A[ \[\]]+|[ \[\]]+\Z/,'')
=> "foo [] boo"
也可以缩短为
"[[ ] foo [] boo ][ ]".gsub(/\A[][ ]+|[][ ]+\Z/,'')
=> "foo [] boo"
答案 2 :(得分:2)
ruby中没有这样的方法,但你可以很容易地定义它:
class String
alias strip_ws strip
def strip chr=nil
return self.strip_ws if chr.nil?
self.gsub /^[#{Regexp.escape(chr)}]*|[#{Regexp.escape(chr)}]*$/, ''
end
end
这将满足要求的要求:
> "[ [] foo [] boo [][]] ".strip(" []")
=> "foo [] boo"
虽然仍然在不太极端的情况下做你期望的事情。
> ' _bar_ '.strip.strip('_')
=> "bar"
的nJoy!
答案 3 :(得分:2)
尝试String#delete
方法:(可在1.9.3中使用,不确定其他版本)
例如:
1.9.3-p484 :003 > "hehhhy".delete("h")
=> "ey"
答案 4 :(得分:0)
尝试gsub方法:
irb(main):001:0> "[foo ]".gsub(/\As+[/,'')
=> "foo ]"
irb(main):001:0> "foo ]".gsub(/s+]\Z/,'')
=> "foo"
等
答案 5 :(得分:0)
您可以使用: str.chomp('.') 适用于尾随字符,您可以反转前导字符的字符串: str.reverse.chomp('.').reverse
要同时执行这两项操作,您可以: str.chomp('.').reverse.chomp('.').reverse
注意:chomp 默认只删除一次出现