Thanks Michael, _Rot40 is better to preserve also the case: (_Rot40 (_Rot40 "$Foo_02-B_01")) > "$Foo_02-B_01"
In Bricscad I have this behaviour of snvalid (in AutoCAD all are ok):
(defun testsnvalid (str / Countr Caract)
(setq Countr 1)
(repeat (strlen str)
(if (snvalid (setq Caract (substr str Countr 1)))
(princ Caract)
(progn (print Caract) (princ " < NOT valid - Valid > "))
)
(setq Countr (1+ Countr))
)
(princ)
)
(testsnvalid "!#$%&()-0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_abcdefghijklmnopqrstuvwxyz{}~©¶")
"!" < NOT valid - Valid > #$%&()-0123456789
"@" < NOT valid - Valid > ABCDEFGHIJKLMNOPQRSTUVWXYZ
"[" < NOT valid - Valid >
"]" < NOT valid - Valid > ^_abcdefghijklmnopqrstuvwxyz
"{" < NOT valid - Valid >
"}" < NOT valid - Valid > ~©¶
May I use this version also for Bricscad?
(defun _Rot40 ( text )
(_RotateTextByMap
text
(strcat
;"!#$%&()-0123456789@ABCDEFGHIJKLMNOPQRSTU"
"#$%&()-0123456789ABCDEFGHIJKLMNOPQRSTU"
;"VWXYZ[]^_abcdefghijklmnopqrstuvwxyz{}~©¶"
"VWXYZ^_abcdefghijklmnopqrstuvwxyz~©¶"
)
)
)