是否有Ruby / Rails函数会删除某个用户定义字符的字符串?例如,如果我想删除我的引号“... text ...”
http://api.rubyonrails.org/classes/ActiveSupport/Multibyte/Chars.html#M000942
答案 0 :(得分:2)
您可以将tr与第二个参数一起用作空字符串。例如:
%("... text... ").tr('"', '')
将删除所有双引号。
虽然如果您使用此功能来清理输入或输出,那么它可能无法有效防止SQL注入或跨站点脚本攻击。对于HTML,最好使用gem sanitize或视图助手函数h
。
答案 1 :(得分:2)
我不知道我是否在这里重新发明轮子,所以如果你找到同样的内置方法,请告诉我: - )
我将以下内容添加到config/initializers/string.rb
,将trim
,ltrim
和rtrim
方法添加到String类中。
# in config/initializers/string.rb
class String
def trim(str=nil)
return self.ltrim(str).rtrim(str)
end
def ltrim(str=nil)
if (!str)
return self.lstrip
else
escape = Regexp.escape(str)
end
return self.gsub(/^#{escape}+/, "")
end
def rtrim(str=nil)
if (!str)
return self.rstrip
else
escape = Regexp.escape(str)
end
return self.gsub(/#{escape}+$/, "")
end
end
我这样用它:
"... hello ...".trim(".")
=> “你好”
和
"\"hello\"".trim("\"")
=> “你好”
我希望这会有所帮助: - )
答案 2 :(得分:1)
我不知道开箱即用,但这应该做你想要的:
class String
def strip_str(str)
gsub(/^#{str}|#{str}$/, '')
end
end
a = '"Hey, there are some extraneous quotes in this here "String"."'
puts a.strip_str('"') # -> Hey, there are some extraneous quotes in this here "String".
答案 3 :(得分:0)
您可以使用String#gsub:
%("... text... ").gsub(/\A"+|"+\Z/,'')
答案 4 :(得分:0)
class String
# Treats str as array of char
def stripc(str)
out = self.dup
while str.each_byte.any?{|c| c == out[0]}
out.slice! 0
end
while str.each_byte.any?{|c| c == out[-1]}
out.slice! -1
end
out
end
end
如果要删除所有其字符串模式的额外实例,Chuck的答案需要一些+
符号。如果你想删除任何可能以任何顺序出现的字符集,它就不起作用。
例如,如果我们想要一个字符串不以以下任何一个结尾:a, b, c
,而我们的字符串是fooabacab
,我们需要更强大的东西,就像我上面提供的代码一样。< / p>