スクリプトから空の行を削除するJMP テーブル内に 2 番目のスクリプトを作成し、それをコピーして JMP スクリプト ウィンドウに貼り付けて機能的なスクリプトを作成するスクリプトがあります。この方法の性質上、完成したスクリプトには多くの空の行が含まれるため、それらを排除したいと思います。再フォーマットしてもうまくいかず、REGEX と GLOBALREPLACE を試しても失敗します。これで成功した人はいますか?
手がかりを求めてここを調べたのですが、まだ見つかりません。
スクリプトエディタのスクリプト作成 (jmp.com)
自動化とスクリプトRe: スクリプトから空の行を削除するここに 1 つのアイデアがあります。スクリプトを取得し、基本的にすべての改行を削除してから、スクリプトを再フォーマットします。
再フォーマットされたスクリプトはコードを再調整する
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: スクリプトから空の行を削除するすべてのコメントも削除されるという事実を許容できる場合は(数式エディタのように)、 Charまたは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 />新しいウィンドウは標準のスクリプト エディター ウィンドウです - 同じ外観と操作性を備えています (例: スクリプトを実行するための再生ボタン : )</TYPE>
Re: スクリプトから空の行を削除するコードを少し改良しましたが、完璧な解決策ではありませんが、うまくいくかもしれません
与えられた

戻ってくる

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: スクリプトから空の行を削除するJim と Hogi に感謝します。これが実際どれほど複雑であるかに驚きました。この場合は、二重のキャリッジ リターンの発生を排除する何かが機能するだろうと思っていました。正規表現ステートメントは JMP テーブルでは機能しますが、スクリプトでは機能しないのでしょうか?
ww = New Window( (names), << Script );
ed = ww[Script Box(1)];
Regex( ed, "\n\n", "", GLOBALREPLACE )
Re: スクリプトから空の行を削除するはい、もちろん、JMP では、やりたいことを実行する方法が常に 12 通りあります...
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: スクリプトから空の行を削除する行を変更する空白文字はすべて同じではないため、問題が発生する可能性があります。Words() は、次のような場合にクリーンなオプションになることがあります。
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;
JMPでは

JSL 構文規則 (jmp.com)
正規表現では(通常)

Re: スクリプトから空の行を削除するジャーモ
すごい!少しいじる必要がありました。すぐには認識できなかったタブがあったようです。これは最終的に機能しました。
Wait(1);
sb2 << Set Text(Regex(sb1 << get text, "[\r\t]+", "\!N", GLOBALREPLACE));
sb2 << reformat;
Re: スクリプトから空の行を削除するジャーモ
さらに良いことに、並列スクリプト ウィンドウを用意する必要はありません。これを使用すると、単一のウィンドウで削除を実行できます。現在のスクリプト ウィンドウを ed として指定し、レースに出発します。ご協力ありがとうございます。
ed = ww[Script Box(1)];
Wait(1);
ed << Set Text(Regex(ed << get text, "[\r\t]+", "\!N", GLOBALREPLACE));
ed << reformat;