안녕하세요, "August_2020"과 같이 month_year에서 연도를 추출하는 정규 표현식이 있습니다. 그러나 저는 Year "cYear" 문자를 숫자로 변환하여 수학을 할 수 있는 올바른 구문을 찾을 수 없었습니다. 어떤 포인터라도 감사하겠습니다. 감사해요!!
Names Default To Here( 1 );
SelMonth = {"October_2020"};
cYear = (Regex Match (char(SelMonth), "\d{4}") );
//convert character year to number year
nYear = Num ("cYear"); //Scripting Guide p137
//Subtract 1 and get previous year
pYear = (nYear - 1);
//convert previous year to character
cpYear = Char ( pYear);또는 변수의 마지막 4자를 가져와 Regex 함수보다 쉬운 숫자로 변환할 수 있습니다.
a = "October_2020";
nYear = Num(Right(a, 4));
작지만 이해할 수 있는 오류가 많이 있습니다.
SelMonth = {"October_2020"};
문자열 주위의 중괄호 {}는 하나의 요소를 생성했습니다. 목록 . 일부러 그랬는지 아닌지는 모르겠다. 제공한 이 예와 달리 실제 문제가 다중 요소 목록(예: {"October_2020", "November_2020"})과 관련된 경우 따라야 할 내용 중 일부를 조정해야 합니다. 알려주세요.
문자열 값을 얻으려면 중괄호를 제거하십시오.
SelMonth = "October_2020";
다음 문제는 다음 줄입니다.
cYear = (Regex Match (char(SelMonth), "\d{4}") );
정규식 일치() 다음 단계에서 문제를 일으킬 목록을 반환합니다. 또한 지나치게 복잡합니다. 대신, 단어() 기능은 당신의 친구입니다. 수식편집기 함수 하나만 배운다면 워드()가 .
cYear=Word(2, SelMonth, "_");
show(cYear);
/*:
cYear = "2020";
다음 줄로 이동:
nYear = Num ("cYear");
여기에서 변수 이름을 따옴표로 묶어서 변수 이름 대신 문자 리터럴로 만듭니다. 대신 다음이 있어야 합니다.
nYear = Num (cYear);
그러나 목록을 반환하는 Regex Match() 함수로 돌아가면 여기서 문제가 발생합니다.Num() 함수는 목록을 인수로 사용하지 않습니다.
Regex Match() 사용을 고집하는 경우 대괄호[]를 인덱스로 사용하여 작업하려는 목록의 요소를 지정해야 합니다.
nYear = Num (cYear[1]);
참고: Word() 함수를 사용하라는 내 제안을 받아들이면 이것은 불필요합니다.
모두 합치면 다음이 필요합니다.
Names Default To Here( 1 );
SelMonth = "October_2020";
cYear = (Regex Match (char(SelMonth), "\d{4}") );
cYear=Word(2, SelMonth, "_");
//convert character year to number year
nYear = Num (cYear); //Scripting Guide p137
//Subtract 1 and get previous year
pYear = (nYear - 1);
//convert previous year to character
cpYear = Char ( pYear);
아! 예, 목록의 첫 번째 값입니다! 감사합니다 텍사스,
변수 "SelMonth"는 JMP 목록(예: {})이므로 변수 "cYear"의 값은 목록입니다.
{"2020"}
"SelMonth"가 목록이어야 하는 이유가 있다고 가정하면 간단한 해결책은 아래 첨자와 함께 "cYear"를 참조하여 값을 얻는 것입니다.
nYear = Num (cYear[1]);