목록에서 문자열 편집분석하려는 배치 번호를 선택하기 위해 스크립트에서 사용하는 목록 상자를 만들고 있습니다. 폴더의 파일 이름을 기준으로 배치 번호 목록을 만들고 싶습니다. 배치 번호로만 파일 이름을 편집하는 방법을 알 수 없습니다.
파일 이름 목록은 다음과 같습니다.
"data_20229.csv", "data_20230.csv", "data_20231.csv", "data_20232.csv",
"data_20236.csv", "data_20237.csv", "data_20238.csv", "data_20239.csv",
"data_20240.csv", "data_20241.csv", "data_20242.csv", "data_20243.csv",
"data_20244.csv", "data_20245.csv", "data_20247.csv", "data_20248.csv",
"data_20251.csv", "data_20252.csv", "data_20253.csv", "data_20254.csv",
"data_20255.csv", "data_20256.csv", "data_20257.csv", "data_20258.csv",
"data_20259.csv", "data_20260.csv", "data_20261.csv", "data_20262.csv",
"data_20263.csv", "data_20264.csv", "data_20265.csv", "data_20266.csv",
"data_20267.csv", "data_20268.csv", "data_20269.csv", "data_20270.csv"
나는 목록이 이렇게 끝나기를 원한다
"20229", "20230", "20231", "20232", "20233", "20234", "20235", "20236",
"20237", "20238", "20239", "20240", "20241", "20242", "20243", "20244", "20245",
"20246", "20247", "20248", "20249", "20250", "20251", "20252", "20253", "20254",
"20255", "20256", "20257", "20258", "20259", "20260", "20261", "20262", "20263",
"20264", "20265", "20266", "20267", "20268", "20269", "20270"
스크립팅Re: 목록에서 문자열 편집~에게 @eaindahl ,
마침표는 누락된 값에 속합니다. 즉, 정규식이 일치 항목을 찾지 못했습니다.
나중에 제거하거나 목록 생성 중에 피할 수 있으며 루프를 약간 변경해야 합니다.
나중에 제거하는 쉬운 방법은 다음과 같습니다(첫 번째 방법은 문자열 조작을 통해, 두 번째는 루프 스루를 통해).
BR
names default to here(1);
list = {., ., ., ., ., ., ., "20131", "20132", "20133"};
new_list = parse(substitute(char(list),".,", ""));
show (list);
show (new_list);
new_list={};
for (i=1, i<= n items(list), i++,
if (!is missing(list[i]), new_list = insert(new_list, list[i]));
);
show(new_list);
Re: 목록에서 문자열 편집게오르그 감사합니다! 정말 잘 작동합니다. 나는 전에 정규식을 사용한 적이 없으며 이 한 가지 문제를 해결하기 위해 인터넷 검색을 시도했습니다. 동일한 폴더에 숫자가 포함되지 않은 일부 정크 파일이 있습니다. 따라서 해당 파일의 이름은 목록에 포함되지 않지만 마침표는 포함됩니다. 기간을 어떻게 없앨 수 있습니까?
{., ., ., ., ., ., ., "20131", "20132", "20133",}
Re: 목록에서 문자열 편집이 방법은 for 루프를 사용하지 않습니다.
Names Default To Here( 1 );
exampleList = {"data_20229.csv", "data_20230.csv", "data_20231.csv",
"data_20232.csv", "data_20236.csv", "data_20237.csv", "data_20238.csv",
"data_20239.csv", "data_20240.csv", "data_20241.csv", "data_20242.csv",
"data_20243.csv", "data_20244.csv", "data_20245.csv", "data_20247.csv",
"data_20248.csv", "data_20251.csv", "data_20252.csv", "data_20253.csv",
"data_20254.csv", "data_20255.csv", "data_20256.csv", "data_20257.csv",
"data_20258.csv", "data_20259.csv", "data_20260.csv", "data_20261.csv",
"data_20262.csv", "data_20263.csv", "data_20264.csv", "data_20265.csv",
"data_20266.csv", "data_20267.csv", "data_20268.csv", "data_20269.csv",
"data_20270.csv"};
str = char(examplelist);
newstr = substitute(str, "data_", "", ".csv", "");
new_list = parse(newstr);
show( new_list );Re: 목록에서 문자열 편집고마워, 짐.
워드 기능은 그러한 목적을 위한 훌륭하고 이해하기 쉬운 기능입니다.
훨씬 더 일반적인 접근 방식은 정규식을 사용하는 것일 수 있습니다.
Jims Script의 한 줄을
exampleList[i] = regex(exampleList[i], "([0-9]+)", "\1")
숫자의 첫 번째 항목을 검색합니다.
이것은 데이터가 이 예에서처럼 깨끗하지 않을 때 유용할 수 있습니다. 정규식은 엄청나게 강력합니다.
Re: 목록에서 문자열 편집가장 쉬운 방법은 Word() 함수를 사용하는 것입니다.
Names Default To Here( 1 );
exampleList = {"data_20229.csv", "data_20230.csv", "data_20231.csv",
"data_20232.csv", "data_20236.csv", "data_20237.csv", "data_20238.csv",
"data_20239.csv", "data_20240.csv", "data_20241.csv", "data_20242.csv",
"data_20243.csv", "data_20244.csv", "data_20245.csv", "data_20247.csv",
"data_20248.csv", "data_20251.csv", "data_20252.csv", "data_20253.csv",
"data_20254.csv", "data_20255.csv", "data_20256.csv", "data_20257.csv",
"data_20258.csv", "data_20259.csv", "data_20260.csv", "data_20261.csv",
"data_20262.csv", "data_20263.csv", "data_20264.csv", "data_20265.csv",
"data_20266.csv", "data_20267.csv", "data_20268.csv", "data_20269.csv",
"data_20270.csv"};
For( i = 1, i <= N Items( exampleList ), i++,
exampleList[i] = Word( 2, exampleList[i], "_." )
);
show( exampleList );
Word() 함수에 대한 문서는 Scripting Index에서 찾을 수 있습니다.