scala.io.Source的getLines()方法從它返回的行中剝離\ r和\ n。我反而希望將這些字符保留在返回的字符串中。閱讀Scala 2.7中的文件行,保留行結束符
getLines'評論說:
返回線(不包括換行符(S))[...]如果你需要更精緻的行爲,那麼可以繼承源#LineIterator
我我試圖對LineIterator進行子類化,但我遇到了麻煩(並且可能存在明顯的誤解!)。
我想是這樣的:
class FullLineIterator() extends LineIterator {
// Don't strip \r?\n
override def getc() = iter.hasNext && {
val ch = iter.next
if (ch == '\n') {
sb append ch
false
} else if (ch == '\r') {
sb append ch
if (iter.hasNext && iter.head == '\n') {
iter.next
sb append iter.head
}
false
} else {
sb append ch
true
}
}
}
但是我打了幾個重大問題:
1)型LineIterator沒有找到,即使我有進口scala.io.Source._
2 )我很確定我無法訪問sb,因爲它在LineIterator內部是私有的[this]。
有沒有人想要這樣做?這是一件很奇怪的事情,但我確實希望做到這一點:)。
我偷看過scalax,並且一直在Google上搜索,沒有運氣。
任何建議將受到感謝。謝謝。
是的,我想我要帶你建議的方法。謝謝。 – owst 2010-07-30 11:26:46