在正则表达式中如果让需要替换的字符变成一个可以赋值的变量
本帖最后由 YAOSHIWEI 于 2014-1-6 14:14 编辑在正则表达式中如果让需要替换的字符变成一个可以赋值的变量 例子是把所有的“中”字变成红色
(vl-load-com)
(setq mtext(vlax-ename->vla-object(car(entsel "\n选择多行文字:"))));转换为VLA对象
(setq regex(vlax-create-object "Vbscript.RegExp"));引用正则表达式控件
(vlax-put-property regex "IgnoreCase" 0); 不忽略大小写
(vlax-put-property regex "Global" 1);全文匹配,而不是只匹配第一处
(setq s (vla-get-textstring mtext))
(vlax-put-property regex "Pattern" "中")
(setq s(vlax-invoke-methodregex "Replace" s "{\\C1中}"));如果单改变一个字的颜色、字体该怎么办、以及要不要括号、原文的字有颜色需要改变
(vla-put-textstring mtext s) 这种只可以一个一个字的替换,有点麻烦
(vl-load-com)
(setq mtext(vlax-ename->vla-object(car(entsel "\n选择多行文字:"))));转换为VLA对象
(setq regex(vlax-create-object "Vbscript.RegExp"));引用正则表达式控件
(vlax-put-property regex "IgnoreCase" 0); 不忽略大小写
(vlax-put-property regex "Global" 1);全文匹配,而不是只匹配第一处
(setq s (vla-get-textstring mtext))
(setq B \\C1中)
(vlax-put-property regex "Pattern" "中")
(setq s(vlax-invoke-methodregex "Replace" s "{B}"));如果单改变一个字的颜色、字体该怎么办、以及要不要括号、原文的字有颜色需要改变
(vla-put-textstring mtext s)
为什么不可以改有什么错误
应该怎么改,我希望可以改成接受文字的输入 就是你想替换哪个字,就输入哪个字,而不是总是改程序 YAOSHIWEI 发表于 2014-1-6 13:48 static/image/common/back.gif
就是你想替换哪个字,就输入哪个字,而不是总是改程序
你先把字符串加上引号再说:(setq B "\\C1中")
大哥,对不起还是不行,求赐教 (defun c:tt ()
(vl-load-com)
(setq
mtext (vlax-ename->vla-object (car (entsel "\n选择多行文字:")))
) ;转换为VLA对象
(setq regex (vlax-create-object "Vbscript.RegExp"))
;引用正则表达式控件
(vlax-put-property regex "IgnoreCase" 0) ; 不忽略大小写
(vlax-put-property regex "Global" 1) ;全文匹配,而不是只匹配第一处
(setq s (vla-get-textstring mtext))
(setq B "{\\C1;中}")
(vlax-put-property regex "Pattern" "中")
(setq s (vlax-invoke-method regex "Replace" s b))
;如果单改变一个字的颜色、字体该怎么办、以及要不要括号、原文的字有颜色需要改变
(vla-put-textstring mtext s)
) ;_ end of defun
本帖最后由 YAOSHIWEI 于 2014-1-6 15:58 编辑
明白呢,谢谢您的回答。,的确有用 (defun c:tt (/ B MTEXT NEW_C OLD_TXT REGEX S)
(vl-load-com)
(if (and (setq mtext(vlax-ename->vla-object (car (entsel "\n选择多行文字:"))));转换为VLA对象
(setq old_txt (getstring "\n输入需要更改的文字:"))
(setq new_c (getint "\n输入文字颜色<>:"))
) ;_ end of and
(progn
(setq regex (vlax-create-object "Vbscript.RegExp"))
;引用正则表达式控件
(vlax-put-property regex "IgnoreCase" 0) ; 不忽略大小写
(vlax-put-property regex "Global" 1)
;全文匹配,而不是只匹配第一处
(setq s (vla-get-textstring mtext))
(setq B (strcat "{\\C" (rtos new_c 2 0) ";" old_txt "}"))
(vlax-put-property regex "Pattern" old_txt)
(setq s (vlax-invoke-method regex "Replace" s B))
;如果单改变一个字的颜色、字体该怎么办、以及要不要括号、原文的字有颜色需要改变
(vla-put-textstring mtext s)
) ;_ end of progn
) ;_ end of if
(princ)
) ;_ end of defun
我为这个纠结了好几天哟,、看来我是虚不受补,得多加努力,谢谢了, 话说你上个帖子2012-6-5,一样的内容,这都2014-1-6了,居然还没琢磨透这事。。。
本帖最后由 YAOSHIWEI 于 2014-1-6 16:32 编辑
惭愧,主要还是自己功力不够,看来要回炉重造呢,中间中断了学习,唉,一言难尽,接触LSIP都快两年,还是没有学出个所以然来,工作又不是画图,一直当成兴趣,今年毕业,又得找工作,烦啊
页:
[1]