2012-10-15 110 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