Supprimer les lignes vides d'un scriptJ'ai un script qui crée un deuxième script dans une table JMP, le copie et le colle dans une fenêtre de script JMP pour créer un script fonctionnel. En raison de la manière dont cela est réalisé, j'obtiens beaucoup de lignes vides dans le script terminé et j'aimerais les éliminer. Le reformatage ne fait pas l'affaire et mes tentatives de REGEX et de GLOBALREPLACE échouent également. Quelqu'un a-t-il réussi avec ça ?
J'ai cherché des indices ici mais je n'y suis toujours pas.
Script de l'éditeur de script (jmp.com)
Automatisation et scriptsRe: Supprimer les lignes vides d'un scriptVoici une idée. Il s'agit de prendre un script et de supprimer tous les sauts de ligne, puis de reformater le script.
Le script reformaté réaligne le code
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: Supprimer les lignes vides d'un scriptSi vous pouvez vivre avec le fait que tous les commentaires sont également supprimés [comme dans l'éditeur de formules], vous pouvez utiliser la magie de Char ou 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 nouvelle fenêtre est une fenêtre d'éditeur de script standard - avec le même aspect (par exemple, un bouton de lecture pour exécuter le script : )</TYPE>
Re: Supprimer les lignes vides d'un scriptJ'ai un peu affiné mon code, ce qui n'est pas une solution parfaite, mais cela peut fonctionner
Donné

Il revient

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: Supprimer les lignes vides d'un scriptMerci Jim et Hogi. Je suis surpris de voir à quel point cela est compliqué. J'avais pensé que quelque chose qui élimine les cas de double retour chariot aurait fonctionné dans ce cas. Peut-être que les instructions Regex fonctionnent sur les tables JMP mais pas sur les scripts ?
ww = New Window( (names), << Script );
ed = ww[Script Box(1)];
Regex( ed, "\n\n", "", GLOBALREPLACE )
Re: Supprimer les lignes vides d'un scriptoui, bien sûr, dans JMP, il y a toujours 12 façons de faire ce que vous voulez faire...
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: Supprimer les lignes vides d'un scriptLes caractères d'espacement qui changent de ligne ne sont pas tous identiques, ce qui peut poser des problèmes. Parfois, Words() peut être une option propre pour quelque chose comme ça
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;
Dans JMP

Règles de syntaxe JSL (jmp.com)
En regex (généralement)

Re: Supprimer les lignes vides d'un scriptJarmo
Puissant ! J'ai dû le modifier un peu, il semble qu'il y avait un onglet que je n'ai pas immédiatement reconnu. Cela a fini par fonctionner.
Wait(1);
sb2 << Set Text(Regex(sb1 << get text, "[\r\t]+", "\!N", GLOBALREPLACE));
sb2 << reformat;
Re: Supprimer les lignes vides d'un scriptJarmo
Encore mieux, je n'ai pas besoin d'avoir des fenêtres de script parallèles. Je peux faire l'élimination dans une seule fenêtre avec cela. Je nomme la fenêtre de script actuelle comme ed et je suis prêt pour la course. Merci pour l'aide.
ed = ww[Script Box(1)];
Wait(1);
ed << Set Text(Regex(ed << get text, "[\r\t]+", "\!N", GLOBALREPLACE));
ed << reformat;