2015-02-09 65 views
0

我想知道是否有可能刪除一個字符串,因爲它被放入和數組?這是我工作的代碼:刪除文本一旦放入數組

def footnotes(text) 
    file = File.open(text, "r+") 
    contents = file.read 

    notes = [] 
    search = contents.scan(/\\f.*?\\f\*/).each do |find| 
     notes.push(find) 
    end 

    result = notes.each do|note| puts "#{note}\n" 
    end 
    fn = File.open('footnotes.txt', 'w+') 
    fn.puts(result) 
    fn.close 
    file.close 
    end 

我希望我會能夠在文本中刪除\\f.*?\\f\*一旦它發現並放入數組

+0

所以你想刪除數組中的每一個字符串? – 2015-02-09 11:31:57

+0

不,我需要刪除文本中的匹配文本,因爲它被放入數組中。所以例如。一旦在字符串「我有一隻貓」中找到「貓」,它將刪除字符串中的匹配,但將它保留在數組中,所以結果將是數組:[「貓」]字符串:「我有一個」 – Rebs 2015-02-09 11:37:43

回答

1

您正在尋找String#gsub!String#sub!

str = "I have a cat!" 
str.gsub! 'cat', '' 
#=> "I have a !" 

gsub!將取代所有出現在字符串中,sub!只有第一個。

+0

非常感謝這個作品,但爲什麼'str.gsub('cat','')'工作?我認爲這幾乎是一回事。雖然我仍然不確定什麼「!」 – Rebs 2015-02-09 13:59:28

+0

'gsub'將執行替換並返回一個新的字符串,而'gsub!'將替換對象本身。 – mhutter 2015-02-09 20:03:21

0

討巧:

array -= %w["my string"] 

讓我知道如果u正在尋找別的東西

+0

我是否認爲這會刪除數組中已有的內容?我不需要刪除數組中的任何東西,我只需要刪除文本一旦找到(見上面的評論)對不起,我不認爲我解釋得很好 – Rebs 2015-02-09 11:47:17

0
string = 'I have a cat' 
array = ['cat', 'mouse'] 
string.slice!(array[0]) 
p string #=> "I have a " 
+0

嗯這是有用的,因爲你可以使用正則表達式,但是有一種方法可以刪除所有出現的搜索,例如:' 'string ='我有一個33cat22' array = ['cat','mouse'] string.slice!(/ \ d + /) puts字符串 #=>「我有一個cat22」' 但它不會刪除「22」 – Rebs 2015-02-09 13:46:33