的部分我有這個字符串紅寶石更換字符串
s = "03:23 PM on 09/04/12"
我想帶出「開」並且只是一個空間「 」代替它。我認爲字符串的gsub方法和正則表達式是最好的解決方案。我只是不知道爲什麼這不會工作。
s ="03:23 PM on 09/04/12"
s.gsub(/ on /, ' ')
puts s
#=> "03:23 PM on 09/04/12"
的部分我有這個字符串紅寶石更換字符串
s = "03:23 PM on 09/04/12"
我想帶出「開」並且只是一個空間「 」代替它。我認爲字符串的gsub方法和正則表達式是最好的解決方案。我只是不知道爲什麼這不會工作。
s ="03:23 PM on 09/04/12"
s.gsub(/ on /, ' ')
puts s
#=> "03:23 PM on 09/04/12"
的字符串的方法gsub
返回的修改後的字符串,獨自離開對象的字符串。如果你想修改對象,那麼你必須使用gsub!
。
此外,如果您只想更改一次匹配,那麼sub
可能是您最好的選擇。
所以
s = "03:23 PM on 09/04/12"
s = s.sub(' on ', ' ')
或
s.sub!(' on', ' ')
'sub',因爲它改變了第一次出現,在處理長字符串時比'gsub'快得多。 'sub'會立即退出,'gsub'會掃描剩餘的字符串以替換添加目標。 –
@theTinMan:公平的說,這個優點不太可能是重要的,特別是對於二十個字符的字符串。 – Borodin
正如我所說,特別是在處理很多字符串時,它會影響長字符串。 –
工作正常,我......也許你想用gsub!
?
>> s ="03:23 PM on 09/04/12"
=> "03:23 PM on 09/04/12"
>> s.gsub(/ on /, ' ')
=> "03:23 PM 09/04/12"
>> s.gsub!(/ on /, ' ')
=> "03:23 PM 09/04/12"
>> s
=> "03:23 PM 09/04/12"
s ="03:23 PM on 09/04/12"
s.gsub(' on ', ' ')
#>> "03:23 PM 09/04/12"
您可以在不regex
去在這種情況下,但如果你想使用regex
,然後用s.gsub!(/ on /, ' ')
使用RegExp對象的GSUB參數,則不需要(/ on /
)你也可以使用一個字符串 - 這對我有用!
s = "03:23 PM on 09/04/12"
p s.gsub " on ", " "
#=> "03:23 PM 09/04/12"
'gsub'返回字符串改變,'GSUB!'會產生變異到位的字符串。 – thomasfedb