Dies ist wahrscheinlich sehr einfach zu erreichen, aber ich kann nicht herausfinden, die eleganteste und einfachste Weg, um meine gewünschten Ergebnisse zu produzieren. Grundsätzlich wird eine Textdatei als Eingabe für mein Programm gesendet. Alle Zeichenfolgen in dieser Datei sind durch Zeilenumbrüche getrennt (\r
), neue Zeilenvorschübe (\n
) oder eine Kombination aus beidem.Pattern Matching Strings, die in verschiedenen nicht gedruckten Chars enden
Gerade jetzt, meine Funktion ist die folgende
local function file_Parse(input)
local inputTbl = {}
if input then
for lines in input:gmatch("%g*%G*") do
lines = lines:gsub("\r\n", "")
table.insert(inputTbl, #inputTbl + 1, lines)
end
end
return inputTbl
end
Nun ist diese sehr einfach ist. Die empfangene Eingabe sieht in etwa wie folgt aus:
DFEIJ-SDFA\r\nDAFK-DAFDAFEA\r\nDKLAJFDAKJFE-DFAKJ\r\n
zum Beispiel. Bitte beachte, dass ich \r\n
zwischen die Saiten platziert habe, die ich möchte. Aber manchmal kann ich eine Mischung aus Wagenrücklauf und Zeilenvorschub haben, in unterschiedlicher Reihenfolge oder ohne eine der beiden, zufällig zwischen den Saiten, die ich möchte. Das ist mein Problem.
Jetzt funktioniert es in der Funktion, die ich oben zur Verfügung gestellt habe, aber für mich muss lines = lines:gsub("\r\n","")
in diese überhaupt eingeben, wirklich mich stört. Ich denke, dass ich in der Lage sein sollte, mich am Anfang meiner for-Schleife innerhalb der lines:gmatch("%g*%G*")
Zeile zu kümmern und automatisch diese nicht-druckbaren Zeichen nicht zu erfassen. Aber ich kann nicht für das Leben von mir die beste Möglichkeit zu überprüfen, ob \r
, \n
, oder beide \r\n
(oder \n\r
) abgestimmt ist, nur die druckbaren Zeichen greifen und die nicht druckbaren Zeichen vergessen.
Ich habe versucht, verschiedene Methoden zu versuchen und in den meisten Fällen scheint es nicht lines
in meine for-Schleife zu erfassen und sie in die Tabelle einzugeben. Ich habe einige der folgenden versucht:
("(%g*%G*)[\r\n]")
("(%g*%G*)[\r*\n*]")
("(%g*%G*)[\r-\n-]")
("(%g*%G*)[\r?\n?]")
("(%g*%G*)[%c]")
("(%g*%G*)[%c-]")
("(%g*%G*)[%c+]")
Ich habe beide http://lua-users.org/wiki/PatternsTutorial und http://www.lua.org/manual/5.2/manual.html#6.4.1 Ressourcen lesen, aber ich Fehler richtig alle druckbaren Zeichen packen und nicht die nicht druckbare Zeichen. Ich würde mich über einen Ratschlag freuen, der mir hilft, zu verstehen, was ich falsch mache und die Antwort auf den Ansatz, nach dem ich suche.
'für Zeilen in der Eingabe: gmatch ("% g +") do' –