本帖最后由 作者 于 2009-1-5 22:30:49 编辑
nonsmall发表于2009-1-5 18:16:00 精简一下(setq str \"\\"(setq a (strcat \\"\\"new\\"\\" \\"\\"disk\\"\\" \\"\\"d:\\\\\\"\\"))\\"\")(while (/= str (setq str (vl-string-subst \"@\" \"\\"\\"\" str))))(while (/= str
另辟蹊径,一个函数6行代码包打无限多重字符化的表达式求值 $eval = 执行多次字符化的表达式字符串 ----- by 狂刀 2009.1.6 (setq str "\"(setq a (strcat \"\"new\"\" \"\"disk\"\" \"\"d:\\\\\"\"))\"") ($eval str) -> "newdiskd:\\" (vl-prin1-to-string str) -> "\"\\\"(setq a (strcat \\\"\\\"new\\\"\\\" \\\"\\\"disk\\\"\\\" \\\"\\\"d:\\\\\\\\\\\"\\\"))\\\"\"" ($eval (vl-prin1-to-string (vl-prin1-to-string str))) -> "newdiskd:\\" (vl-prin1-to-string (vl-prin1-to-string (vl-prin1-to-string (vl-prin1-to-string str)))) ->"\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"(setq a (strcat \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"new\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"disk\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"d:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"))\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\"\\\"\"" ($eval (vl-prin1-to-string (vl-prin1-to-string (vl-prin1-to-string (vl-prin1-to-string str))))) -> "newdiskd:\\" |