Leere Zeilen aus einem Skript entfernenIch habe ein Skript, das ein zweites Skript in einer JMP-Tabelle erstellt, dieses kopiert und in ein JMP-Skriptfenster einfügt, um ein funktionsfähiges Skript zu erstellen. Aufgrund der Art und Weise, wie dies erreicht wird, erhalte ich im fertigen Skript viele leere Zeilen und diese möchte ich beseitigen. Neuformatierung funktioniert nicht und meine Versuche mit REGEX und GLOBALREPLACE schlagen ebenfalls fehl. Hat jemand damit Erfolg gehabt?
Ich habe hier nach Hinweisen gesucht, bin aber noch nicht am Ziel.
Skripten mit dem Skript-Editor (jmp.com)
Automatisierung und SkriptingBetreff: Leere Zeilen aus einem Skript entfernenHier ist eine Idee. Dabei wird ein Skript verwendet, das grundsätzlich alle Zeilenumbrüche entfernt und anschließend das Skript neu formatiert.
Das neu formatierte Skript richtet den Code neu aus
Names Default To Here( 1 );
nw = New Window( "This is a script box",
sb = Script Box( "print(\!" Hello\!");
print(\!" Hello\!");
print(\!" Hello\!");
print(\!" Hello\!");
print(\!" Hello\!");", 300, 100 );
);
sb << Save Text( "$TEMP/Test.jsl" );
nw << close window;
intText = Load Text File( "$TEMP/Test.jsl" );
substitute into(intText,hextochar("0D"), " ");
nw = New Window( "This is a new script box",
sb = Script Box()
);
sb << Append Text( intText );
sb << reformat;
Betreff: Leere Zeilen aus einem Skript entfernenWenn Sie damit leben können, dass auch alle Kommentare entfernt werden [wie im Formel-Editor], können Sie die Magie von Char oder Parse nutzen:
myScript = Char(
Expr(
For( i = 1, i <= 5, i++,
// Print the value of i.
Print( i );
);
// End expression.
)
);
nw = New Window( "test", <<TYPE></TYPE>
<CODE class=" language-jsl">myScript = Parse( "/* Begin quote. */
For (i = 1, i <= 5, i++,
// Print the value of i.
Print(i);
);
// End expression.");
write(myscript)
by the way: via <CODE class=" language-jsl"><<TYPE><BR /> Das neue Fenster ist ein Standardfenster des Skript-Editors – mit demselben Look and Feel (z. B. einer Wiedergabetaste zum Ausführen des Skripts:)</TYPE>
Betreff: Leere Zeilen aus einem Skript entfernenIch habe meinen Code ein wenig verfeinert, was keine perfekte Lösung ist, aber es könnte funktionieren
Gegeben

Es kehrt zurück

Names Default To Here( 1 );
nw = New Window( "This is a script box",
sb = Script Box( "print(\!" Hello\!");
print(\!" Hello\!");
print(\!" Hello\!");
// comment
print(\!" Hello\!");
// comment
print(\!" Hello\!");", 300, 100 );
);
sb << Save Text( "$TEMP/Test.jsl" );
nw << close window;
intText = Load Text File( "$TEMP/Test.jsl" );
substitute into(intText,hextochar("0D0D"), "\!n");
substitute into(intText,hextochar("0A0A"), " ");
substitute into(intText,hextochar("2F2F"), "\!n//");
nw = New Window( "This is a new script box",
sb = Script Box()
);
sb << Append Text( intText );
sb << reformat;Betreff: Leere Zeilen aus einem Skript entfernenDanke, Jim und Hogi. Ich bin überrascht, wie kompliziert das eigentlich ist. Ich hatte gedacht, dass in diesem Fall etwas funktionieren würde, das doppelte Wagenrückläufe verhindert. Vielleicht funktionieren Regex-Anweisungen bei JMP-Tabellen, aber nicht bei Skripten?
ww = New Window( (names), << Script );
ed = ww[Script Box(1)];
Regex( ed, "\n\n", "", GLOBALREPLACE )
Betreff: Leere Zeilen aus einem Skript entfernenja, sicher, in JMP gibt es immer 12 Möglichkeiten, das zu tun, was Sie tun möchten ...
ww = New Window( "title", << Script );
ed = ww[Script Box(1)];
new window("helper", Button Box ("clean",
mytext = ed << get text;
ed << set text(Regex( mytext, "[\n\r]{2,}", "\n", GLOBALREPLACE ))))Betreff: Leere Zeilen aus einem Skript entfernenZeilenwechselnde Leerzeichen sind nicht alle gleich, was zu Problemen führen kann. Manchmal kann Words() eine saubere Option für so etwas sein
Names Default To Here(1);
nw = New Window("This is a script box",
H List Box(
Panel Box("Long Script",
sb1 = Script Box(
"print(\!" Hello\!");
print(\!" Hello\!");
print(\!" Hello\!");
// comment
print(\!" Hello\!");
// comment
print(\!" Hello\!");",
600,
500
);
),
sb2 = Script Box(, 600, 500)
)
);
// You can also clear tabs if you wish to \t (regex) or \!t (jmp)
Wait(1);
sb2 << Set Text(Regex(sb1 << get text, "[\r\n]+", "\!N", GLOBALREPLACE));
sb2 << reformat;
Wait(1);
sb2 << Set Text("");
Wait(1);
sb2 << Set Text(Concat Items(Words(sb1 << get text, "\!N"), "\!N"));
sb2 << reformat;
Wait(1);
sb2 << Set Text("");
Wait(1);
lines = sb1 << get lines;
empty = Loc(ls, "");
sb2 << Set Text(Concat Items(Remove(lines, As List(empty)), "\!N"));
sb2 << reformat;
In JMP

JSL-Syntaxregeln (jmp.com)
In regulären Ausdrücken (normalerweise)

Betreff: Leere Zeilen aus einem Skript entfernenJarmo
Mächtig! Ich musste ein bisschen daran herumbasteln, es schien, als gäbe es einen Tab, den ich nicht sofort erkannt habe. Das hat letztendlich funktioniert.
Wait(1);
sb2 << Set Text(Regex(sb1 << get text, "[\r\t]+", "\!N", GLOBALREPLACE));
sb2 << reformat;
Betreff: Leere Zeilen aus einem Skript entfernenJarmo
Noch besser, ich brauche keine parallelen Skriptfenster. Damit kann ich die Eliminierung in einem einzigen Fenster durchführen. Ich nenne das aktuelle Skriptfenster als ed und schon kann es losgehen. Danke für die Hilfe.
ed = ww[Script Box(1)];
Wait(1);
ed << Set Text(Regex(ed << get text, "[\r\t]+", "\!N", GLOBALREPLACE));
ed << reformat;