주어진 파일 이름에서 문자의 와일드카드 선택안녕하세요,
파일 이름에서 특정 문자를 조회하고 해당 파일을 선택하려고 합니다.
예: 파일 이름: HELLO123_MT_XYZ,
암호:
을 위한 ( 나 = 1 , 나 <= N개 항목 ( 파일 ) , 나 ++,
만약에 ( 포함 ( 파일 [ 나 ] , "산" ) , //파일명으로 검색조건 입력
열려 있는 ( 파일 [ 나 ] ) ;
)
) ;
위의 코드 "MT"는 문자로 MT가 포함된 모든 파일 이름을 가져옵니다. 하지만 와일드 카드로 파일을 어떻게 선택할 수 있습니까? 예: *123*XY*
Re: 주어진 파일 이름에서 와일드카드 문자 선택응답해 주셔서 감사합니다.
파일 이름에 동일한 문자가 두 번 반복되어 파일 전체를 가져오고 있다는 것을 알지 못했습니다.
파일 이름의 문자열 길이를 제한했으며 이제 검색 기준에 따라 파일을 가져올 수 있습니다.
대단히 감사합니다!
Re: 주어진 파일 이름에서 와일드카드 문자 선택정규식은 보다 일반적인 솔루션을 제공할 수 있습니다.
// Wildcard in a string: *123*XY*
slist = {"HELLO123_MT_XYZ", "HELLO123_MT_Z", "GOODBYE123_MT_XY", "XY_FUBAR_123"};
rx = "(123).*(XY)";
for (i = 1, i <= nitems(slist), i++,
result = regex(slist[i], rx);
print(slist[i] || ": " || char(result));
);Re: 주어진 파일 이름에서 와일드카드 문자 선택귀하의 항목과 혼동됩니다. 먼저 코드 문제를 해결해 보겠습니다. 처음에 코드에 오류가 있었습니다. 그리고 나서 나는 다시 엉망이되었습니다. 사용해야 하는 코드는 다음과 같습니다.
<SPAN class="token function">Contains</SPAN><SPAN class="token punctuation">(</SPAN> files<SPAN class="token punctuation">[</SPAN>i<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"123"</SPAN> <SPAN class="token punctuation">)</SPAN> <SPAN class="token operator">></SPAN> <SPAN class="token number">0</SPAN> <SPAN class="token operator">&</SPAN> <SPAN class="token function">Contains</SPAN><SPAN class="token punctuation">(</SPAN> files<SPAN class="token punctuation">[</SPAN>i<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"XY"</SPAN> <SPAN class="token punctuation">)</SPAN> <SPAN class="token operator">></SPAN> <SPAN class="token number">0</SPAN> <SPAN class="token operator">&</SPAN> <SPAN class="token function">Contains</SPAN><SPAN class="token punctuation">(</SPAN> files<SPAN class="token punctuation">[</SPAN>i<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"XY"</SPAN> <SPAN class="token punctuation">)</SPAN> <SPAN class="token operator">></SPAN> <SPAN class="token function">Contains</SPAN><SPAN class="token punctuation">(</SPAN> files<SPAN class="token punctuation">[</SPAN>i<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"123"</SPAN> <SPAN class="token punctuation">)</SPAN>
이 코드에는 마법 같은 것이 없습니다. 설명하겠습니다. Contains() 함수는 리터럴 문자열(귀하의 경우 Files[i]의 현재 값)에서 두 번째 인수 "123"의 값을 찾습니다. 찾으면 찾은 위치를 반환합니다. 따라서 Contains()를 처음 사용하면 값 "123"이 있는지 확인합니다. 두 번째 사용은 "XY" 값이 있는지 확인하고 세 번째 비교는 "123" 값 뒤에 "XY"가 있는지 확인합니다. 그게 전부입니다.
코딩오류 죄송합니다.....
Re: 주어진 파일 이름에서 와일드카드 문자 선택여러 글 죄송합니다.
하지만 두 번째 기준을 " _ 0A" 그런 다음 "0A"를 사용하면 대신 특정 파일을 가져올 수 있으며 이 기준을 무시합니다.
나는 아주 기본적인 조건을 놓치고 있다고 확신합니다.
감사해요,
친탄
Re: 주어진 파일 이름에서 와일드카드 문자 선택실제로 아래에서 사용하면-
만약에 ( 포함 ( 파일 [ 나 ] , "123" ) > 0 & 포함 ( 파일 [ 나 ] , "XY" ) > 포함 ( 파일 [ 나 ] , "123" ) ,
결과를 얻을 수 있습니다. 하지만 오 내가 찾은 문제는 파일 이름이 -
1. HELLOABC_0A_H2ABC
2. HELLOABC_1D_H2ABC
"ABC"와 "0A"를 선택하면 "ABC"가 있는 모든 파일을 가져오는 반면 "ABC"와 "1D"를 사용하면 파일 이름에 두 문자가 모두 포함된 특정 파일을 가져옵니다.
어떻게 구별합니까? 0 A 대 1 디? 둘 다 문자열로 취급되어야 합니다.
Re: 주어진 파일 이름에서 와일드카드 문자 선택죄송합니다. 내 오류입니다. 다음과 같아야 합니다.
If( Contains( files[i], "123" ) > 0 & Contains( files[i], "123" ) > 0 & Contains( files[i], "XY" ) > Contains( files[i], "123" ),
Open( files[i] )
)
Re: 주어진 파일 이름에서 와일드카드 문자 선택txnelson: 신속한 응답에 감사드립니다.
어떤 이유로 여전히 "123"이 포함된 모든 파일을 반환하고 "XY"를 검색 기준으로 고려하지 않습니다.
여러 delims와 관련이 있습니까?
Re: 주어진 파일 이름에서 와일드카드 문자 선택If( Contains( files[i], "123" ) > 0 & Contains( files[i], "XY" ) > Contains( files[i], "123" ),
Open( files[i] )
)