2010-11-16 91 views

回答

130

你需要在你的GSUB使用"\n"'\n'。不同的引號標記行爲有所不同。

雙引號"允許字符膨脹和表達插值即他們讓你使用轉義字符控制像\n代表其真實價值,在這種情況下,換行符,並允許使用的#{expression}這樣你就可以編織變量,那麼,幾乎你想進入任何文字表達的紅寶石。

而在另一方面,單引號'處理字符串字面,所以沒有擴充,更換,插或者你有什麼。

在這種特殊情況下,最好是請使用.delete.tr字符串的方法來刪除換行符

See here for more info

+12

正確的語法真的會。gsub(/ \ n /,「」) – 2012-07-26 19:57:18

+2

@David是正確的。但是,我認爲重要的是要證明引用有所不同,因爲這會對Ben產生好處。請注意,大衛,這可能更像是一種風格問題,而不是「正確」。就我個人而言,我認爲'tr'是這項任務的更好選擇,但正如我所說,我認爲在我回答時指出單引號和雙引號的區別更好。 – ocodo 2012-07-30 00:06:44

19

你並不需要這樣的正則表達式。使用TR:

"some text\nandsomemore".tr("\n","") 
48

當要刪除一個字符串,而不是取代它,你可以使用String#delete(或其突變相當於String#delete!),例如:

x = "foo\nfoo" 
x.delete!("\n") 

x現在等於 「foofoo」

在這種特殊情況下String#deletegsub更具可讀性,因爲你實際上並沒有與任何替換字符串。

+3

至少在Ruby 1.9.3中,'delete'不具有破壞性,如此處所示。它返回一個新的字符串。 – 2013-08-01 15:27:43

+0

斑點。我已經更新了該代碼片段以使用更改版本String#delete!而不是String#delete – 2013-11-25 15:42:56

29

如果你想要或不介意所有領先的,並從您的字符串刪除您可以使用strip方法尾隨空白。

" hello ".strip #=> "hello" 
"\tgoodbye\r\n".strip #=> "goodbye" 

如上所述here

編輯原標題這個問題是不同的。我的回答是針對原始問題。

+2

這並不回答這個問題。 'strip'只能刪除前導和尾隨空白:http://ruby-doc.org/core-1.9.3/String.html#method-i-strip-21 – thelostspore 2015-03-11 20:31:27

+0

@mvdanj是的,給出這個特定問題的細節沒有回答,但它確實回答了僅基於標題的問題。我懷疑這就是爲什麼人們發現它很有用。 – ThomasW 2015-07-28 01:13:56

+0

標題從我最初回答的時候開始改變。 – ThomasW 2015-10-28 01:15:30

10

使用chompstrip從紅寶石功能:

"abcd\n".chomp => "abcd" 
"abcd\n".strip => "abcd" 
+2

這不回答問題。 'strip'只刪除前後的空格 - http://ruby-doc.org/core-1.9.3/String.html#method-i-strip-21 – thelostspore 2015-03-11 20:30:25

+1

chomp是最好的方式......不能相信在chomp方法中,這種方法的效率低於 – user1735921 2016-08-19 22:47:33

+0

,如果它們存在,\ n和\ r將從str的結尾移除,而不是在中間。所以這不解決OP問題 – silva96 2017-04-26 19:15:54