当前离线UID55526帖子57精华0积分1052魅力90阅读权限70注册时间2009-1-12
头衔:资深会员
帖子57精华0积分1052威望5金钱244魅力903#发表于2009-4-1510:22PM|本帖最后由bjzjt于2009-4-1511:01PM编辑
雪山飞狐
嗯,我觉得字符串处理确实是个很需要技巧的工作,从前用VISUALLISP写过处理这个问题的程序,现在用.NET重写这部分内容,觉得正则表达式很厉害,用得好可以一行代码解决几十行的问题,以前接触不多,今天是现学现用。但是再厉害的正则表达式恐怕也无法判断在{的前面有奇数还是偶数个\吧?所以我想大概只能按飞狐兄的法子,先把\\替换成不可能用的字符,然后再用我上面的那行代码去掉{而保留\{。
代码如下:CommandMethod(test)_
PublicSubtest_regex()
DimsAsString={\C3;\{\\\\ObjectARX{\fSimSun|b0|i0|c134|p2;编程站\}}\Lhttp://www.objectarx.net{\C3;ObjectARX编程站\Lhttp{\C1;://{\C3;www}.objectarx.net}\l是一个好网站啊,呵呵}\l是{\Ftxt.shx,gbcbig.shx|c134;一个好网站}啊,呵呵}
s=s.Replace(\\,Chr(1))'先把真正的反斜杠换成不可能用到的字符
s=Regex.Replace(s,(?!\\)[{}]|\\[OoLlSsPp~]|\\[CcFfHhTtQqWwAa].+?;,)'去掉格式字符
s=s.Replace(\,)'去掉剩下的转义用的反斜杠
s=s.Replace(Chr(1),\)'把真正的反斜框换回来
ed.WriteMessage(vbCrLfs)
EndSub复制代码还能更简单吗?
0 评论:
发表评论