스크립트에서 빈 행 제거JMP 테이블 내부에 두 번째 스크립트를 빌드하고, 복사하여 JMP 스크립트 창에 붙여넣어 기능적 스크립트를 만드는 스크립트가 있습니다. 이것이 달성되는 방식의 특성 때문에 완성된 스크립트에 빈 행이 많이 생기고 이를 제거하고 싶습니다. Reformat은 효과가 없고 REGEX와 GLOBALREPLACE에 대한 시도도 실패합니다. 이걸로 성공한 사람이 있나요?
여기서 단서를 찾아보았지만 아직 거기에 도달하지 못했습니다.
스크립트 편집기 스크립팅(jmp.com)
자동화 및 스크립팅Re: 스크립트에서 빈 행 제거여기 한 가지 아이디어가 있습니다. 스크립트를 가져와서 기본적으로 모든 줄 바꿈을 제거한 다음 스크립트를 다시 포맷합니다.
재포맷된 스크립트는 코드를 다시 정렬합니다.
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;