我有一種方法可以掃描純文本(特別是QIF格式),查找在'D'在新的一行:我如何使用字符串#掃描來掃描多行僅用回車符分隔的行,而不是一個新行
dates = "D2009-11-12\nPApple Store\nMSnow Leopard\nD2009-11-13\nPApple Store\nMiMac".scan(/^\s*D"?(.+?)[\r\n?|\n]/m)
# => [["2009-11-12"], ["2009-11-13"]]
"D2009-11-12\r\nPApple Store\r\nMSnow Leopard\r\nD2009-11-13\r\nPApple Store\r\nMiMac".scan(/^\s*D"?(.+?)[\r\n?|\n]/m)
# => [["2009-11-12"], ["2009-11-13"]]
這種運作良好,在各種格式的,但我剛剛遇到一個問題,從加快了Mac,這節省了他們在經典MacOS格式上生成的文件。也就是說,行使用回車符分隔,而不是新行(即'\ r'而不是'\ n'或'\ n \ r')。
"D2009-11-12\rPApple Store\rMSnow Leopard\rD2009-11-13\rPApple Store\rMiMac".scan(/^\s*D"?(.+?)[\r\n?|\n]/m)
# => [["2009-11-12"]]
這個問題似乎是Ruby的多行正則表達式的代碼不會考慮「\ r」是一個新的行分隔符(這當然是不)。
支持原始分析還處理這些Mac OS Classic文件的最佳方式是什麼?
我應該替換「\ n \ r」「\ r」的所有occurrances,如果是這樣,我應該怎麼去這樣做,因爲到string.gsub(/\r/, '\n\r')
通話將導致\n\r\r
在某些情況下被替換。我想致電string.gsub(/[^\n]\r/, '$1\n\r')
,但這不受gsub
方法的支持。
怎麼樣'split'-ING那麼字符串檢查每個元素逐一? – kennytm 2010-02-15 12:12:36