목록에서 문자열 편집분석 할 배치 번호를 선택하기 위해 스크립트에서 사용하는 목록 상자를 만들고 있습니다. 폴더의 파일 이름을 기준으로 배치 번호 목록을 만들고 싶습니다. 파일 이름을 배치 번호로만 편집하는 방법을 알 수 없습니다.
파일 이름 목록은 다음과 같습니다.
"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 : 목록의 문자열 편집가장 쉬운 방법은 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에서 찾을 수 있습니다.
Re : 목록의 문자열 편집고마워, 짐.
워드 기능은 이러한 목적을 위해 훌륭하고 이해하기 쉬운 기능입니다.
보다 일반적인 접근 방식은 정규식을 사용할 수 있습니다.
따라서 Jims Script의 한 줄을
exampleList[i] = regex(exampleList[i], "([0-9]+)", "\1")
숫자의 첫 번째 발생을 검색합니다.
이 예 에서처럼 데이터가 깨끗하지 않은 경우 유용 할 수 있습니다. Regex는 엄청나게 강력합니다.
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 : 목록의 문자열 편집감사합니다 Georg! 정말 잘 작동합니다. 나는 전에 정규식을 사용한 적이 없으며이 문제를 해결하기 위해 인터넷 검색을 시도했습니다. 숫자가 포함되지 않은 동일한 폴더에 일부 정크 파일이 있습니다. 따라서 해당 파일의 이름은 목록에 포함되지 않지만 마침표는 있습니다. 기간을 없애려면 어떻게합니까?
{.,.,.,.,.,.,., "20131", "20132", "20133",}처럼 보입니다.
Re : 목록의 문자열 편집소중한 뿡뿡 ,
마침표가 누락 된 값에 속합니다. 즉, 정규식이 일치하는 항목을 찾지 못했습니다.
당신은 그것들을 뒷 단어로 제거하거나 목록 생성 중에 피할 수 있으며 루프를 약간 변경해야합니다.
뒷 단어를 제거하는 쉬운 방법은 다음과 같습니다 (첫 번째 방법은 문자열 조작을, 두 번째 방법은 루프를 통해).
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);