이름에서 문자열 추출안녕,
이름에서 데이터 문자열을 추출하고 싶습니다. 문자열의 위치는 이름에 따라 다르며 이름에는 가변 개수의 하위 문자열이 있습니다. 예는 다음과 같습니다.
(GPN) CI-4 / E7 / DH-1 15S-40 L1807
DEO (GPN) JD CI-4 / E7 / DH-1 5S-40 L1807
(GPN) JD CI-4 / E7 / DH-1 40 L1807
나는 두 부분에 관심이 있습니다 : 문자 S를 포함하는 문자열 (예에서 15S-40 & 5S-40). w가 없으면 숫자 값에 관심이 있습니다.
표준 수식 함수를 사용하여이를 추출 할 수 있습니까?
어떤 도움이라도 좋을 것입니다.
감사,
디페 쉬
다시 : 이름에서 문자열을 추출제거하려는 구성 요소가 마지막 그룹에서 두 번째입니다. 이 경우 아래 코드가 해당 작업을 수행합니다. Word () 함수는 매우 강력한 함수입니다. 설명서는 스크립팅 안내서 또는 스크립팅 색인에 있습니다.
도움말 ==> 도서 ==> 스크립팅 안내서
도움말 ==> 스크립트 색인 ==> 단어
Names Default To Here( 1 );
dt = New Table( "test",
New Column( "String",
character,
values(
{"(GPN) CI-4/E7/DH-1 15S-40 L1807", "DEO (GPN) JD CI-4/E7/DH-1 5S-40 L1807",
"(GPN) JD CI-4/E7/DH-1 40 L1807"}
)
)
);
dt << New Column( "Value", character, formula( Word( -2, :String, " " ) ) );
다시 : 이름에서 문자열을 추출여보세요,
답장을 보내 주셔서 감사합니다.
불행히도 추출하고 싶은 단어가 문자열에있는 공통점이 없습니다. 때로는 위치 2이며 때로는 위치 7입니다!
문안 인사,
디페 쉬
다시 : 이름에서 문자열을 추출정규 표현식을 사용하면 'S'를 누를 때까지 '공백'과 일부 문자를 일치시키고 다음 '공백'을 누를 때까지 더 많은 문자를 일치시킬 수 있습니다
PAT = "((GPN) CI-4 / E7 / DH-1 15S-40 L1807";
x = 정규식 (PAT, "\ S + (? = S-). *");
쇼 (x);
다시 : 이름에서 문자열을 추출테스트되지 않은 W가 포함 된 예를 제공하지 않았습니다. 나는 이것이 당신의 문제를 해결할 것이라고 생각합니다 :
YourList = {"(GPN) CI-4/E7/DH-1 15S-40 L1807", "DEO (GPN) JD CI-4/E7/DH-1 5S-40 L1807", "(GPN) JD CI-4/E7/DH-1 40 L1807"};
Part1 = Part2 = {};
For(i=1,i<=N items(YourList),i++,
SubWords = Words(YourList[i], " ");
For(k=1,k<=N Items(SubWords),k++,
If(contains(SubWords[k],"S")>0,
Part1[i] = SubWords[k];
k=N Items(SubWords)+1;
)
);
);
For(i=1,i<=N items(Part1),i++,
If(contains(part1[i],"W")==0,
Part2[i] = right(part1[i],2);
)
);