消除脚本中的空行我有一个脚本,它在 JMP 表中构建第二个脚本,将其复制并粘贴到 JMP 脚本窗口以生成功能脚本。由于实现方式的性质,我在完成的脚本中得到很多空行,我想消除这些空行。重新格式化不起作用,我尝试使用 REGEX 和 GLOBALREPLACE 也失败了。有人成功了吗?
我在这里寻找线索但仍然一无所获。
编写脚本编辑器 (jmp.com)
自动化和脚本回复:从脚本中消除空行这里有一种方法。它获取一个脚本并基本上删除所有换行符,然后重新格式化该脚本。
重新格式化的脚本重新调整了代码
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;
回复:从脚本中消除空行如果您可以接受所有注释也被删除的事实(例如在公式编辑器中),那么您可以使用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>
回复:从脚本中消除空行我稍微改进了一下代码,虽然不是完美的解决方案,但可能会有效
鉴于

它返回

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;回复:从脚本中消除空行谢谢 Jim 和 Hogi。我很惊讶这实际上有多复杂。我原以为在这种情况下可以消除双回车符的发生。也许 Regex 语句适用于 JMP 表但不适用于脚本?
ww = New Window( (names), << Script );
ed = ww[Script Box(1)];
Regex( ed, "\n\n", "", GLOBALREPLACE )
回复:从脚本中消除空行是的,当然,在 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 ))))回复:从脚本中消除空行换行空白字符并不完全相同,这可能会导致一些问题。有时 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)
在正则表达式中(通常)

回复:从脚本中消除空行雅尔莫
太棒了!不得不稍微修一下,好像有一个标签我没有立即识别出来。最后终于成功了。
Wait(1);
sb2 << Set Text(Regex(sb1 << get text, "[\r\t]+", "\!N", GLOBALREPLACE));
sb2 << reformat;
回复:从脚本中消除空行雅尔莫
更好的是,我不需要并行脚本窗口。我可以用这个在单个窗口中完成消除。我将当前脚本窗口指定为 ed,然后就可以开始比赛了。谢谢你的帮助。
ed = ww[Script Box(1)];
Wait(1);
ed << Set Text(Regex(ed << get text, "[\r\t]+", "\!N", GLOBALREPLACE));
ed << reformat;