Ich bin eine Ressource-Datei und die Aufteilung auf Leerzeilen-Parsing, mit dem folgenden Code:Scala regex Spaltung auf Input
val inputStream = getClass.getResourceAsStream("foo.txt")
val source = scala.io.Source.fromInputStream(inputStream)
val fooString = source.mkString
val fooParsedSections = fooString.split("\\r\\n[\\f\\t ]*\\r\\n")
Ich glaube, das den Eingangsstrom in dem Speicher als vollständige Zeichenfolge zieht, und dann Aufteilen auf die Regex. Dies funktioniert gut für die relativ kleine Datei, ich bin Parsen, aber es ist nicht ideal, und ich bin gespannt, wie ich es--
Zwei Ideen verbessern könnte:
- lesen Sie die Eingabe-Stream Line-by -Linie und einen Puffer von Segmenten, die ich aufbauen, Splitting auf Leerzeilen
- lesen den Strom Zeichen-für-Zeichen und Segmente aus einer kleinen endlichen Automaten
jedoch basiert analysieren, würde ich Ich liebe es, wenn möglich keinen veränderbaren Puffer zu pflegen.
Irgendwelche Vorschläge? Dies ist nur für ein persönliches Spaßprojekt, und ich möchte lernen, wie man das auf eine effiziente und funktionelle Weise macht.