假設我有一個類似「abc | xyz」的字符串,並且我想僅使用正則表達式替換將其轉換爲「xyz | abc」。 (在這個例子中可能有更好的方法,但這是一個替身的東西多毛。)用於重新排列字符串的Ruby's gsub
下面的代碼並沒有做什麼,我希望:
x = "abc | xyz"
x = x.gsub(/^([^\|\s]*)\s*\|\s*(\S*)/, "\2 | \1")
puts x
是很明顯就是我」米做錯了嗎?謝謝!
假設我有一個類似「abc | xyz」的字符串,並且我想僅使用正則表達式替換將其轉換爲「xyz | abc」。 (在這個例子中可能有更好的方法,但這是一個替身的東西多毛。)用於重新排列字符串的Ruby's gsub
下面的代碼並沒有做什麼,我希望:
x = "abc | xyz"
x = x.gsub(/^([^\|\s]*)\s*\|\s*(\S*)/, "\2 | \1")
puts x
是很明顯就是我」米做錯了嗎?謝謝!
您需要轉義替換字符串中的反斜槓。例如,
x = "abc | xyz"
x = x.gsub(/^([^\|\s]*)\s*\|\s*(\S*)/, "\\2 | \\1")
puts x
或只是
x = "abc | xyz"
x = x.gsub(/^([^\|\s]*)\s*\|\s*(\S*)/, '\2 | \1')
puts x
和獎勵積分,一個簡單的正則表達式:
x = "abc | xyz"
x = x.gsub(/(.*) \| (.*)/, '\2 | \1')
puts x
而且總是有這樣做的方法不止一種..
"abc | xyz".split(' | ').reverse.join(' | ')
請不要這麼說 - Perl人將要起訴商標侵權! :) – 2010-10-01 00:11:03
個人而言,我更喜歡看到它比用正則表達式完成。 – 2010-10-01 00:28:03
被授予,原始問題表明真正的需求是複雜得多......但這確實說明了ruby如何以不同的方式處理問題。 – DGM 2010-10-01 04:06:23
哈,現在非常有意義。非常感謝! – dreeves 2010-09-30 22:13:51