use REGEXP
;; http://bbs.xdcad.net , XDRX API
(defun XD::String:RegExpR (pat str nstr key / keys x)
(if (not *xxvbsexp)
(setq *xxvbsexp (vlax-get-or-create-object "VBScript.RegExp"))
)
(vlax-put *xxvbsexp 'Pattern pat)
(if (not key)
(setq key "")
)
(setq key (strcase key))
(setq keys '(("I" "IgnoreCase")
("G" "Global")
("M" "Multiline")
)
)
(mapcar
'(lambda (x)
(if (wcmatch key (strcat "*" (car x) "*"))
(vlax-put *xxvbsexp (read (cadr x)) 0)
(vlax-put *xxvbsexp (read (cadr x)) -1)
)
)
keys
)
(vlax-invoke *xxvbsexp 'replace str nstr)
)
(setq txt "V:\\01.Projects\\K-1502\\DWG\\01-ARBASE\\0.1.9-BUILDINGS_09\\K1502_B09_B_ALL.dwg")
(setq txt1 (xd::string:regexpr "BUILDINGS_[0-9]+" txt "BUILDINGS_07" ""))
(setq txt2 (xd::string:regexpr "B[0-9]+" txt1 "B07" ""))
(setq txt3 (xd::string:regexpr "0.1.[0-9]+" txt2 "0.1.7" ""))
or:
1.(setq txt1 (xd::string:regexpr "(BUILDINGS_)[0-9]+" txt (strcat "$1" "07") ""))
$1 = BUILDINGS_
2.(setq txt2 (xd::string:regexpr "(B)[0-9]+" txt1 (strcat "$1" "07") ""))
$1=B
3.(setq txt3 (xd::string:regexpr "(0.1.)[0-9]+" txt2 (strcat "$1" "7") ""))
$1=0.1.
or merge 1,2:
(setq txt1 (xd::string:regexpr "(BUILDINGS_)[0-9]+|(B)[0-9]+" txt (strcat "$1" "07") ""))
or
(setq txt1 (xd::string:regexpr "(B|BUILDINGS_)[0-9]+" txt (strcat "$1" "07") ""))
(setq txt3 (xd::string:regexpr "(0.1.)[0-9]+" txt1 (strcat "$1" "7") ""))
===================
txt3 = "V:\\01.Projects\\K-1502\\DWG\\01-ARBASE\\0.1.7-BUILDINGS_07\\K1502_B07_B_ALL.dwg"
functions:
(defun _AddBuildingFloor (str floor / txt1)
(setq txt1 (xd::string:regexpr
"(B|BUILDINGS_)[0-9]+"
txt
(strcat "$1" floor)
""
)
)
(setq txt1 (xd::string:regexpr
"(0.1.)[0-9]+"
txt1
(strcat "$1" (itoa (atoi floor)))
""
)
)
)
command: (_ADDBUILDINGFLOOR txt "07")
"V:\\01.Projects\\K-1502\\DWG\\01-ARBASE\\0.1.7-BUILDINGS_07\\K1502_B07_B_ALL.dwg"
command: (_ADDBUILDINGFLOOR txt "12")
"V:\\01.Projects\\K-1502\\DWG\\01-ARBASE\\0.1.12-BUILDINGS_12\\K1502_B12_B_ALL.dwg"