Visual LISP, AutoLISP and General Customization
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic to the Top
- Bookmark
- Subscribe
- Printer Friendly Page
Remove a portion of a string
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
I am trying to make this: L:\Engineering\0208037\SURVEY\DRAWINGS turn into this: L:\Engineering\0208037\DRAWINGS
I am using the dwgprefix and it returns the first string and i want to make it in the second string as a new variable or replace the old variable so i can use it in a save as routine i am working on.
The problem is sometimes them project number (0208037) will be longer or shorter so i can't use the substr command
2012 all sp's.
and thanks to you all.
Re: Remove a portion of a string
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
The VL-string... commands should give you everything that you need to accomplish this.. Check them out in the Developer Help VisualLISP reference. They're very useful when working with strings. Just remember (vl-load-com). If you need further help I'll come up with something when I get a chance.
'(83 104 110 101 117 112 104 64 71 109 97 105 108 46 99 111 109)
Re: Remove a portion of a string
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Saveapath original value: "L:\\Engineering\\0208037\\SURVEY\\DRAWINGS"
via
(setq savepath (strcat (getvar "dwgprefix") (getvar "dwgname")))
Savepath new value: "L:\\Engineering\\0208037\\DRAWINGS"
via
(setq savepath (strcat (substr savepath 1 (vl-string-search "SURVEY" savepath)) (substr savepath (+ (vl-string-search "SURVEY" savepath) 8))))
'(83 104 110 101 117 112 104 64 71 109 97 105 108 46 99 111 109)
Re: Remove a portion of a string
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
ThomasGlidewell wrote:I am trying to make this: L:\Engineering\0208037\SURVEY\DRAWINGS turn into this: L:\Engineering\0208037\DRAWINGS
I am using the dwgprefix and it returns the first string and i want to make it in the second string as a new variable or replace the old variable so i can use it in a save as routine i am working on.
The problem is sometimes them project number (0208037) will be longer or shorter so i can't use the substr command
2012 all sp's.
and thanks to you all.
We could have easily use Vl-REMOVE, but in case you had a folder with the same name along the filepath like this
"L:\\CAD\\Projects\\2012\\Project CodeXXX\\CAD\\"
the vl-remove function tends to remove duplicates,
same goes with vl-string-search method
(vl-string-search "CAD" "L:\\CAD\\Projects\\2012\\Project CodeXXX\\CAD\\") 3
If the variable was indeed from DWGPREFIX system variable (which includes "\\" at the end, unlike your example string)
So using a list and a number instead of a string name representing the position of the folder name:
(defun rempath (str num / pref v p f str rp i pathlist)
(setq pref (substr str 1 3))
(while (and (setq v (vl-string-position 92 str))
(setq f (vl-string-position
92
(substr str (setq v (+ 2 v))))))
(setq p (cons (substr str v (1+ f)) p)
str (substr str v))
)
(setq rp (nth num (setq pathlist (cons pref (reverse p))))
i -1)
(apply 'strcat
(vl-remove-if
'(lambda (j)
(setq i (1+ i))
(and (equal j rp)
(= i num)
))
pathlist)
)
)
(getvar 'dwgprefix)
"L:\\Engineering\\0208037\\SURVEY\\DRAWINGS\\"
(REMPATH (getvar 'dwgprefix) 3);<--- 3rd folder
"L:\\Engineering\\0208037\\DRAWINGS\\"
(REMPATH (getvar 'dwgprefix) 2);<--- 2nd folder
"L:\\Engineering\\SURVEY\\DRAWINGS\\"
HTH
Re: Remove a portion of a string
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
(vl-string-subst "" "\\SURVEY" (getvar "dwgprefix"))
Ian
Re: Remove a portion of a string
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
(vl-string-subst "\\" "\\SURVEY\\" (getvar "dwgprefix"))
Re: Remove a portion of a string
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Ian_Bryant wrote:
You could try
(vl-string-subst "" "\\SURVEY" (getvar "dwgprefix"))
Ian
What if:
(vl-string-subst "" "\\CAD" "L:\\CAD\\Projects\\2012\\Project CodeXXX\\CAD\\Current")
"L:\\Projects\\2012\\Project CodeXXX\\CAD\\Current"
Thats why i posted a generic sub.
No string name, sequence dependent:
But thats just me ![]()

