두 문자열 결합안녕,
다음 형식의 문자열을 포함하는 2개의 열이 있습니다.
string1 = 1;0;2;0;0;8;0
string2 = 0;1;0;3;5;0;13
참고 1: 두 문자열 모두 같은 수의 ";"를 포함합니다. (그러나 반드시 같은 길이는 아닙니다).
참고 2: 두 문자열의 위치가 번갈아 가며 0이 있습니다.
참고 3: 다른 문자열이 동일한 위치에서 0이 아닌 용어가 두 개 있는 한 문자열은 한 행에 두 개의 0(";"으로 구분)을 포함할 수 있습니다.
0이 없는 두 열을 병합한 결과인 새 열(string3)을 만들고 싶습니다. 위 예의 경우:
string3 = 1;1;2;3;5;8;13
따라서 string3은 동일한 수의 ";"를 가져야 합니다. string1 및 string2로 지정하고 ";" 사이에 모든 용어를 포함해야 합니다. 순서대로, 0이 없습니다.
간단한 수식만 사용하여 수행하는 방법이 있습니까? 또는 루프와 같은 다른 방법을 사용합니까?
첨부파일을 참조하시기 바랍니다.
감사,
요탐
데이터 테이블스크립팅Re: 두 문자열 합치기여기에는 이미 몇 가지 솔루션이 있지만 피보나치 수를 사용했기 때문에 주의를 기울였습니다. 
다음은 문자열을 행렬로 변환하고, 행렬을 추가하고, 결과를 다시 문자열로 변환하여 문자열에서 직접 작동하는 또 다른 수식입니다(각각 string1 및 string2라는 열에 저장되어 있다고 가정).
건배,
브래디
Substitute( Char( Parse( "[" || Substitute( :string1, ";", "," ) || "]" ) + Parse( "[" || Substitute( :string2, ";", "," ) || "]" ) ),
"[", "",
"]", "",
",", ";",
" ", ""
);
또한 세미콜론 대신 쉼표 구분 기호를 사용하는 것이 가능한지 확실하지 않지만 이렇게 하면 수식이 조금 더 간단해집니다.
Substitute( Char( Eval( Parse( Eval Insert( "[^:string1^] + [^:string2^]" ) ) ) ),
"[", "",
"]", "",
" ", ""
)
Re: 두 문자열 합치기하는 동안 @txnelson 그리고 @Craige_Hales 몇 가지 흥미롭고 유용한 옵션을 제공했습니다. 귀하의 상황을 올바르게 이해했다면 루프 없이 수식으로 수행할 수 있습니다.
다음은 처음에는 그림으로, 그 다음에는 JSL(공식 편집기에 붙여넣을 수 있음)으로 끝내는 수식입니다.

If( !Is Missing( :string1 ) & !Is Missing( :string1 ),
string1list = Words( :string1, ";" );
string2list = Words( :string2, ";" );
Concat Items( string1list[Loc( string1list, "0" )] = string2list[Loc( string1list, "0" )], ";" );
,
""
)
이것은 단어() 문자열을 목록으로 변환하는 함수. 그것은 사용 위치() string1에서 0의 위치에 대한 행렬을 반환하는 함수를 반환하고 이를 string1list(할당의 왼쪽)와 string2list(할당의 오른쪽) 모두에 대한 인덱스로 사용합니다. 마지막으로, 연결 항목() 함수는 목록을 다시 세미콜론으로 구분된 문자열로 변환합니다.
이 중 혼란스럽거나 이해가 되지 않는 것이 있으면 알려주세요. 자세히 설명하겠습니다.
Re: 두 문자열 합치기감사!
불행히도 현재 JMP16이 아직 없지만 이 솔루션은 확실히 매우 우아해 보입니다!
Re: 두 문자열 합치기환상적입니다.
감사!
Re: 두 문자열 합치기@DonMcCormack - 이것은 큰 도전 문제가 될 수 있다고 생각합니다.
- 문자열의 오류를 포착하고 처리하는 방법(숫자가 아님, 일치하지 않는 0, 길이가 같지 않음)
- 1E6 세미콜론을 빠르게 만드는 방법
편집: JMP 16 사용 서로를 위해 고리:
string1 = "1;0;2;0;0;8;0";
string2 = "0;1;0;3;5;0;13";
result = "";
For Each( {{w1, w2}, idx}, across( Words( string1, ";" ), Words( string2, ";" ) ),
result ||= (If( idx > 1, ",", "" ) || If( w1 == "0", w2, w1 ))
);
result;"1,1,2,3,5,8,13"
Re: 두 문자열 합치기다음은 작동하는 공식입니다.새 수식 열이 있는 새 데이터 테이블을 첨부했습니다.
w = 1;
newString = "";
While( Word( w, :string1, ";" ) != "",
If( newString != "",
newString = newString || ","
);
If( Word( w, :string1, ";" ) != "0",
newString = newString || Word( w, :string1, ";" ),
newString = newString || Word( w, :string2, ";" )
);
w++;
);
newString;
수식은 두 문자열의 동일한 위치에서 0이 발견되는 상황이나 두 문자열의 동일한 위치에 0이 아닌 값이 나타날 수 있는 상황을 확인하지 않습니다.이러한 상황을 처리하는 방법에 대한 규칙이 정의되지 않았습니다.이러한 문제를 확인해야 하는 경우 공식을 수정하면 됩니다.