
간단한 찾기 및 바꾸기
JMP의 스크립팅 언어인 JSL은 숫자, 문자열 및 기타 개체를 변수에 저장할 수 있습니다. 문자열 할당은 다음과 같습니다.
place = "Cary, North Carolina, USA";
변수 장소 이제 문자열을 보유합니다. 다음은 JSL에서 문자열 작업을 위한 함수 세트입니다.장소 모든 예제에서 동일한 문자열을 유지합니다. 정규식 및 패턴 일치는 이후 게시물에서 다룹니다.
연쇄 - 두 개의 문자열을 끝에서 끝까지 함께 연결합니다. 아니면 2개 이상...
sentence = "My home is " || place || ".";
"제 집은 미국 노스캐롤라이나주 캐리예요."
길이 - 문자열에는 몇 개의 문자가 있습니까?
Write( place, " ", Length( place ) );
캐리, 노스캐롤라이나, 미국 25
포함 - 문자열의 어느 부분에 이 텍스트가 포함되어 있습니까?
positionA = Contains( place, "," );
positionB = Contains( place, ",", 1 + positionA );
Show( positionA, positionB );
위치 A = 5;
위치B = 21;
positionA 뒤에서 한 문자 시작하여 positionB를 찾는 방법에 주목하세요. 그렇지 않으면 위치 A의 첫 번째 쉼표가 다시 발견됩니다. 포함(Contains)은 검색이 실패하면 위치 0을 반환합니다. if(포함(...), ...) 잘 일해라.
하위 문자열 - 특정 위치에서 시작하여 길이에 대한 문자열의 일부입니다.
state = Substr( place, 1 + positionA, positionB - (1 + positionA) );
" 노스 캐롤라이나"
첫 번째 쉼표 뒤의 공백도 캡처되었습니다. 길이 인수를 생략하면 substr은 끝으로 이동합니다. 음수 시작 위치에 대한 규칙도 있습니다.
Substr( place, -3, 2 );
"우리를"
-3은 끝에서 3문자 시작을 의미합니다.
손질 - 성가신 공백을 제거하십시오.
state = trim( state, "left" ); // or "right" or "both"
"노스 캐롤라이나"
왼쪽 - 문자열의 왼쪽(앞) 끝에서 몇 개의 문자
Left( place, positionA - 1 );
"캐리"
positionA는 첫 번째 쉼표의 위치인 5입니다. "Cary"는 쉼표 앞의 4글자입니다. 필러 텍스트에 대한 세 번째 인수가 있습니다.
Left( "abc", 15, "@#$*" );<BR />
"abc@#$*@#$*@#$*"
"abc" 왼쪽부터 요청된 15자를 제공하기 위해 필러 텍스트가 얼마나 충분히 추가되었는지 확인하세요. 공간이 더 나은 필러 선택일 수 있습니다. 필러가 없으면 결과는 "abc"입니다.
오른쪽 - 문자열의 오른쪽(뒤) 끝에서 몇 개의 문자
Right( place, 3 ); // like Left, there is a fill option
"미국"
위치가 있는 경우 오른쪽 대신 Substr을 사용하세요.
Substr( place, positionB + 2 ); // +2 goes past the comma and the space
"미국"
Substr에는 길이에 대한 세 번째 값이 필요하지 않습니다. 끝까지 갈 것입니다.
너 ~할 수 있었다 위치 및 길이 함수와 함께 Right를 사용하지만 길이에서 위치를 빼는 방법을 설명할 때에는 더 복잡해집니다.
멍거 - 만물 박사...
Munger는 검색과 교체를 함께 수행합니다. Regex만큼 영리하거나 잘 알려져 있지는 않지만 일단 익숙해지면 이해하기가 더 쉽습니다. 매뉴얼 없이는 누구도 JSL이 무엇을 하고 있는지 알 수 없으므로 건너뛰는 것이 좋습니다.
result = Munger( source, startPosition, textOrLength, optionalReplacementText );
다음은 textOrLength와 optionReplacementText의 다양한 조합을 설명하는 표입니다. 모든 예제에서는 시작 위치로 3을 사용하고 초기 "ab"는 건너뜁니다. 두 번째 "b"를 찾는 네 번째 예를 확인하세요.
| |
교체 없음 |
대체 텍스트 = "$*?" |
| 멍거("abcabc", 3, 2, ? ) |
"카" |
"ab$*?bc" |
| 멍거("abcabc", 3, 0, ?) |
"" |
"ab$*?cabc" |
| 멍거("abcabc", 3, 99, ?) |
"캡" |
"ab$*?" |
| |
|
|
| 멍거("abcabc", 3, "b", ?) |
5 |
"abca$*?c" |
| 멍거("abcabc", 3, "Q", ?) |
0 |
"abcabc" |
| 멍거("abcabc", 3, "", ?) |
0 |
"abcabc" |
충분히 오랫동안 쳐다보면 모든 결과는 다음과 같습니다. 유용한 일관된 방식으로. 찾을 텍스트가 없고 길이만 있으면 Munger는 하위 문자열을 반환합니다. 대체 텍스트가 있으면 대체된 하위 문자열을 사용하여 원본을 반환합니다. 그러나 찾을 텍스트가 있으면 찾은 텍스트를 반환할 이유가 없으므로 대체 텍스트가 없으면 찾은 텍스트의 위치를 가져옵니다. 대체 텍스트가 있는 경우 하위 문자열이 대체된 원래 문자열을 얻게 됩니다. 이상한 경우는 마지막 줄인데, 이는 빈 문자열을 찾는 데 대한 기대를 충족할 수도 있고 충족하지 못할 수도 있습니다. 음수 위치와 길이도 사용하지 마십시오. 여기에는 명확성을 추가하지 않으며 substr()처럼 작동하지 않습니다.
예
데이터 테이블 열 수식은 다른 열의 값을 계산할 수 있습니다. 다음은 쉼표가 고유한 구분 기호라고 가정하는 "성, 이름" 예입니다. 이 예는 Left가 범위를 벗어난 길이를 전부로 해석하는 방식 때문에 "onlyname" 사례에 적용됩니다. Regex 게시물을 찾으면 더 좋을 것입니다.
Column formula using Left() and Contains()Column formula using Left() and Contains()Column formula using Left() and Contains()Column formula using Left() and Contains()Column formula using Left() and Contains()Left() 및 Contains()를 사용한 열 수식
Column formula using substr() and contains()Column formula using substr() and contains()Column formula using substr() and contains()Column formula using substr() and contains()Column formula using substr() and contains()substr() 및 Contains()를 사용한 열 수식
2017년 9월 30일 편집: 포맷 복구
작은 추가:
당신은 쓸 수 있습니다
string = "old text";<BR />string = string || " new text";
~처럼
string = "old text";<BR />string ||= " new text";
자체적으로 연결합니다.