2012-10-15 113 views
9

我有这样Ruby:如何从字符串中删除尾部反斜杠?

"car\" 

一个字符串,我将在postgres的分贝存储。我想在保存之前从字符串中删除反斜杠。有没有办法在ruby或postgres中做到这一点?当我尝试在ruby中删除它时,它将反斜杠后的引号视为转义字符。

+1

您必须将搜索字符串中的反斜杠加倍。 –

回答

24

请参见下面的代码:

1.9.3p125 :022 > s = "cat\\" 
=> "cat\\" 
1.9.3p125 :023 > puts s 
cat\ 
=> nil 
1.9.3p125 :024 > s.chomp("\\") 
=> "cat" 
1.9.3p125 :025 > 
+0

Ruby的chomp方法是为此目的而设计的。 http://www.ruby-doc.org/core-1.9.3/String.html#method-i-chomp – scarver2

2

要删除尾部的反斜杠:

"car\\".gsub!(/\\$/, "") 

注意反斜杠必须用一个反斜杠转义本身。

2

人不这样做了,但Ruby的String类支持:

irb(main):002:0> str = 'car\\' 
=> "car\\" 
irb(main):003:0> str[/\\$/] = '' 
=> "" 
irb(main):004:0> str 
=> "car" 

它是末尾的“\”,并替换为空字符串的条件搜索。

+0

问题是我的rails应用程序从前端收到一个尾随的反斜杠(错误地由用户),我需要存储在数据库中。如何处理这种情况的任何线索? – Ari53nN3o

+0

这就是示例演示的内容。一个尾随的反斜杠。 'car \\'创建一个包含单个尾部反斜杠的字符串。最后一行显示单个尾部反斜杠被删除。 –

0
puts '"car\"'.gsub(/\\(")?$/, '\1') 

,将做到这一点,但 ,是最后的斜线总是在连接之后报价?

+0

是的,它总是跟着一个引号.. – Ari53nN3o

+1

'/ \\(“)* $ /'是处理可能的尾随引用非常尴尬的方式,实际上意味着”零个或多个“尾随引号 –

+0

@the_Tin_Man:你是对的,我的意思是(“)?,不是(”)* – thebugfinder

-1

str.dump 

操作说什么,然后尝试在运行。

+0

如果字符串*没有尾部反斜杠会发生什么? –

+0

当然,我们需要知道这个字符串看起来像细节,当谈到红宝石?“\”汽车\“,”\“汽车\\”“”? – Adam

+0

@theTinMan在文档中表示将返回nil '''返回str,如果没有执行替换,则返回nil。如果没有给出块并且没有替换,则返回枚举器。''' http://ruby-doc.org/core-2.3.1/String.html – DevJ3rry