pos
回報的位置,但訣竅是,位置是作爲一個單一的Integer
通過位置的編碼器(scala.io.Position
)編碼的行和列的組合:
對象位置提供了便利的方法來編碼行 和列號在一個單一的整數。編碼線路* (列)的數字範圍從0到LINE_MASK
(COLUMN_MASK
),* 其中0
表示該行(列)是未定義和* 1
表示的第一行(列)...
https://github.com/scala/scala/blob/v2.11.8/src/library/scala/io/Position.scala
http://www.scala-lang.org/api/2.11.8/#scala.io.Source $ RelaxedPosition $
使用Postioner
爲了得到更可讀的信息:
當前輸入和位置,以及下一個字符方法 委託給定位器。
實施例:
val doc = scala.io.Source.fromFile("aaa.txt")
val positioner = new doc.Positioner()
val positioned = doc.withPositioning(positioner)
positioned.next()
scala> positioner.cline -> positioner.ccol
res15: (Int, Int) = (1,2)
positioned.next()
scala> positioner.cline -> positioner.ccol
res17: (Int, Int) = (1,3)
P.S. Source
是用於讀取數據的字符流,因此它爲您提供便利設施,如getLines()
等,所以基本上這就是爲什麼Positioner
作品行和列,而不是一個絕對位置。
如果你需要一個Iterator
返回你的每一個字符的絕對位置,使用zipWithIndex
:
scala> val doc = scala.io.Source.fromFile("aaa.txt").zipWithIndex
doc: Iterator[(Char, Int)] = non-empty iterator
scala> doc.next()
res38: (Char, Int) = (a,0)
scala> doc.next()
res39: (Char, Int) = (a,1)
scala> doc.next()
res40: (Char, Int) = (a,2)
scala> doc.next()
res41: (Char, Int) = (a,3)
scala> doc.next()
res42: (Char, Int) =
(
,4)