크기가 다른 문자열에서 숫자 추출숫자가 포함된 문자열 열이 있습니다. 이 문자열에 내가 찾고 있는 올바른 텍스트가 포함되어 있는지 확인하는 방법은 알고 있지만 각각 뒤에 오는 값을 추출하는 방법은 모릅니다. 문자열 크기가 같으면 위치에 따라 munger 함수를 사용할 수 있지만 문자열 크기가 일정하지 않기 때문에 수행할 수 없습니다.
예: "수정 사항은 abcde +0.2이며 fghij -1에 더 많은 텍스트가 있습니다."
"abcde" 및 "fghij"를 쿼리하고 문자열이 나타난 직후 공간에서 +0.2 및 -1 각각의 값을 추출하고 싶습니다. 일반적으로 공백 뒤에 +/- 및 숫자가 있습니다(위 그림과 같이 정수 및 소수점 이하 자릿수까지).
Re: 크기가 다른 문자열에서 숫자 추출또 다른 방법 - 단어 기능을 사용해 보세요.열 공식은 다음과 같습니다.
look_for = {"abcde", "fghij", "klmno"};
wlist = Words( :Column 1, " " );
one_num = .;
For( i = 1, i <= N Items( look_for ), i++,
one_word = look_for[i];
f = Contains( wlist, one_word );
If( f,
one_num = Num( wlist[f + 1] );
Break();
);
);
one_num;Re: 크기가 다른 문자열에서 숫자 추출당신은 또한 사용할 수 있습니다 정규식() 열 수식에 정규 표현식이 있는 함수. 당신이 제시한 예가 가능한 모든 조건을 보여주지 않는다면 그 접근 방식이 도움이 될 것입니다. 이것은 아이디어를 설명하기 위한 스크립트입니다.
Names Default to Here( 1 );
text = "The fix in is abcde +0.2, there is more text here fghij -1.";
answer 1 = Num( Regex( text, ".*abcde ([-+]?\d?.?\d?)", "\1" ) );
answer 2 = Num( Regex( text, ".*fghij ([-+]?\d?.?\d?)", "\1" ) );
그만큼 텍스트 스크립트의 변수는 열 공식의 현재 행을 나타냅니다. 그만큼 답변 1 첫 번째 새 결과 열의 동일한 행에 있는 결과가 됩니다. 수식의 등호 오른쪽에 있는 표현식을 사용합니다.
이 예제는 간단합니다. 텍스트의 성격이나 숫자의 서문이 더 복잡하다면 확장하고 다듬어야 할 것입니다.
문자열 일치, 반환 및 대체를 위한 JMP 패턴도 있습니다.
Re: 크기가 다른 문자열에서 숫자 추출Word() 함수를 확인하십시오.귀하가 제공한 예가 주어지면 공백 찾기를 기반으로 문자열에서 두 번째 단어를 간단히 찾을 수 있습니다.
Word(2, <문자열 열>, " " )
또는
Contains() "+" 또는 "-"를 찾고 거기에서 substr() 문자열을 사용하여 숫자 값을 얻을 수 있습니다.
아래 데이터 표를 첨부합니다.
