Eliminare le righe vuote da uno scriptHo uno script che crea un secondo script all'interno di una tabella JMP, lo copia e lo incolla in una finestra di script JMP per creare uno script funzionale. A causa della natura del modo in cui questo viene ottenuto, ottengo molte righe vuote nello script finito e vorrei eliminarle. Reformat non funziona e anche i miei tentativi con REGEX e GLOBALREPLACE falliscono. Qualcuno ci riesce?
Ho cercato qui degli indizi, ma non ci sono ancora arrivato.
Creazione di script per l'editor di script (jmp.com)
Automazione e scriptingRe: Eliminare le righe vuote da uno scriptEcco un'idea. Prende uno script e sostanzialmente rimuove tutti i line feed e poi riformatta lo script.
Lo script riformattato riallinea il codice
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;
Re: Eliminare le righe vuote da uno scriptSe riesci a convivere con il fatto che tutti i commenti vengano rimossi [come in Formula Editor], puoi usare la magia di Char o Parse :
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 /> la nuova finestra è una finestra standard dello Script Editor, con lo stesso aspetto e le stesse funzionalità (ad esempio un pulsante di riproduzione per eseguire lo script : )</TYPE>
Re: Eliminare le righe vuote da uno scriptHo rifinito un po' il mio codice, il che non è una soluzione perfetta, ma potrebbe funzionare
Dato

Ritorna

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;Re: Eliminare le righe vuote da uno scriptGrazie Jim e Hogi. Sono sorpreso da quanto sia complicato in realtà. Pensavo che qualcosa che eliminasse le incidenze di doppi ritorni a capo avrebbe funzionato in questo caso. Forse le istruzioni Regex funzionano sulle tabelle JMP ma non sugli script?
ww = New Window( (names), << Script );
ed = ww[Script Box(1)];
Regex( ed, "\n\n", "", GLOBALREPLACE )
Re: Eliminare le righe vuote da uno scriptsì, certo, in JMP ci sono sempre 12 modi per fare quello che vuoi fare...
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 ))))Re: Eliminare le righe vuote da uno scriptI caratteri di spaziatura che cambiano riga non sono tutti uguali, il che può causare alcuni problemi. A volte Words() può essere un'opzione pulita per qualcosa del genere
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;
Nel JMP

Regole di sintassi JSL (jmp.com)
In regex (di solito)

Re: Eliminare le righe vuote da uno scriptJarmo
Potente! Ho dovuto armeggiare un po', sembra che ci fosse una scheda che non ho riconosciuto immediatamente. Alla fine ha funzionato.
Wait(1);
sb2 << Set Text(Regex(sb1 << get text, "[\r\t]+", "\!N", GLOBALREPLACE));
sb2 << reformat;
Re: Eliminare le righe vuote da uno scriptJarmo
Ancora meglio, non ho bisogno di finestre di script parallele. Posso fare l'eliminazione in una singola finestra con questo. Nomino la finestra di script attuale come ed e sono pronto per la gara. Grazie per l'aiuto.
ed = ww[Script Box(1)];
Wait(1);
ed << Set Text(Regex(ed << get text, "[\r\t]+", "\!N", GLOBALREPLACE));
ed << reformat;