“ds_070_51_1차가공” “077_21_1차가공” “070_61_1차가공” “600_31_1차가공” “20000_31_1차가공”
tx 에는 위의 문자열중 1개가 들어 있습니다.
(setq k 1)
(setq tx “070_31_1차가공”)
(if (= k 1)(setq tx (Replace-string tx “1차가공” “2차가공”)))
이런식으로 조건에 맞으면 뒷 부분만 바꾸고 싶은데요
다른 프로그램에서는 “Replace” 명령어면 간단하게 되는데요
문자열 바꾸는 명령어가 알고 싶습니다.
(if (= k 1)(setq tx (Replace-string tx “1차가공” “2차가공”)))
위 부분만 문법에 맞에 알려 주시면 정말 감사하겠습니다.
감사합니다. ^^
문자열을 다른 문자열로 대치합니다.
(vl-string-subst new-str pattern string [start-pos])
인수
new-str
pattern과 일치하는 부분을 대치할 문자열
pattern
대치될 패턴을 포함하는 문자열
string
pattern을 검색할 문자열
start-pos
검색을 시작할 위치를 지정하는 정수. 생략되면 0.
대소문자를 구분하여 검색됩니다. 또한 vl-string-subst 함수는 발견된 첫번째 부분만 대치합니다.
리턴 값
대치가 수행된 후의 string 값
보기
“Ben”을 “Obi-wan”으로 대치합니다.
“Ben”을 “Obi-wan”으로 대치합니다.
대치가 수행되지 않은 이유는 vl-string-subst “Ben”과 일치하는 문자열을 찾을 수 없기 때문입니다. 검색 대상 문자열의 “ben”은 소문자 “b”로 시작됩니다.
“Ben”을 “Obi-wan”으로 대치합니다.
검색 대상 문자열에 “Ben”이 두 개 있습니다. 하지만 vl-string-subst 은 첫번째 검색된 부분만 대치합니다.
문자열의 4번째 문자부터 검색하여 “Ben”을 “Obi-wan”으로 대치합니다.
검색 대상 문자열에는 “Ben”이 두 개 있습니다. 하지만 vl-string-subst 이 4번째 문자부터 검색을 시작했기 때문에 앞에 있는 “Ben”이 아니라 두번째에 있는 “Ben”이 대치되었습니다.
제가 찾던 명령어 였습니다.
정말 감사합니다. ^^
2007버전에서는 vl-string-subst 명령어가 잘 되는데요
혹시 r14버전에서도 되는 방법이 있을까요?
그래도 이번 문제는 잘 해결 되었습니다.
정말 감사합니다. ^^
,헐 아직도 XP에 2007사용하시는분이 있군요 R14가 2004 버전이라면 저 명령 안될겁니다 AUTOLISP 2006인가 부터 추가된 함수로 알고있습니다