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