2009-12-23 65 views
0

嗨,我使用reg表達式來從紅寶石串中刪除括號和它們之間的內容。問題在於,這有時會在逗號前留下空格。我不知道如何去除這個空間。我一直玩的下面,但它一直沒有工作:在紅寶石串中的逗號前面刪除空格

@char_count = 0 
sentance.each_char{|char| 
    if char == "," 
    if sentance[@char_count-1] == 32 
     sentance[@char_count-1] = "" 
    end 
    end 
    @char_count += 1 
} 

任何幫助表示讚賞!編輯:sentance.gsub!(/,/,',')運行良好,但現在我意識到有些地方在逗號前有多個空格。我也需要考慮這個scenerio。

+0

「感覺」應該是「句子」。 – 2009-12-23 10:49:56

回答

5

您可以使用字符串類的gsub方法來執行此操作。

s = "this is a string, with some commas with spaces in front ,1 ,2 ,3" 
s.gsub(/ ,/, ',') 
"this is a string, with some commas with spaces in front,1,2,3" 

gsub將返回一個新的字符串,空格,字符串替換爲逗號。 GSUB!將改變字符串到位。

如果你有時候有一個尾隨多個空格的逗號,那麼你不妨用一個稍微修改正則表達式來捕捉多個空格

s.gsub!(/ +?,/, ',') 
+0

這是在正確的軌道上!我需要捕捉多個空間,但這似乎並沒有爲下列情況發揮作用:「巴西是巴西聯邦共和國,是南美洲最大的國家,也是該大陸唯一的葡萄牙語國家」 – TenJack 2009-12-23 10:50:31

+0

In它不工作的方式是什麼,它對我來說工作得很好。這是調整後的結果「巴西,正式是巴西聯邦共和國,是南美洲最大的國家,也是該大陸唯一一個講葡萄牙語的國家」 – 2009-12-23 11:11:16

+0

你說得對,它正在起作用。之後我有另一種方法搞砸了。謝謝你的幫助。 – TenJack 2009-12-23 11:30:59

0
sentance.gsub!(/\([^\)]*\)/, '') 
sentance.gsub!(/ ,/, ',') 
2

根據問題的編輯,而不是做

sentance.gsub!(/ ,/, ',') 

做到這一點

sentance.gsub!(/\s+,/, ',') 

這將用逗號移除多個空間中的逗號

+0

重要提示:'\ s'會查找任何空格(製表符,換行符,空格),而不僅僅是空格。 – 2009-12-23 15:50:02

+0

真正的大衛,\的任何空白/行分隔符 – nas 2009-12-23 19:05:49

1
s.gsub(/\s*,/, ',') 

之前將上述正則表達式將尋找任何數量的空白(包括0),隨後立即。

使用測試工具,如下面的測試你的正則表達式: http://www.gskinner.com/RegExr/

0

你也可以同時處理在一個單一的正則表達式去除括號表達式和領先的空間的問題:

sentence.gsub!(/\s*\([^\)]*\)/, '') 

這還會處理加了括號的表達式後跟其他標點符號(句號,分號等等)的情況,因爲真正的問題是括號表達式和開始表達式之前的空格。這也會在文本中留下任何有意使用','的情況,這並不是刪除括號內的表達式造成的。

0

我嘗試了很多方法,但最好的方法是:

s.gsub(/[[:space:]]/,'') 

這將刪除所有的空間字符。