几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   ObjectARX(C++) (http://www.dimcax.com/hust/forumdisplay.php?f=34)
-   -   【转帖】获取acdbmtext对象中的有效字符 (http://www.dimcax.com/hust/showthread.php?t=8035)

yang686526 2009-04-18 07:09 PM

【转帖】获取acdbmtext对象中的有效字符
 
获取acdbmtext对象中的有效字符
获取acdbmtext对象中的有效字符
帮帮忙:
要想在程序中快速获取acdbmtext对象中的有效字符,去掉其中的控制字符,如何编程实现呢?
非要一个一个地搜索“\f”、“;”之类的控制字符标志地过滤吗?
objectarxsdk中有没有专用的函数或方法呢?
有好的方法请介绍一下!
[ 本帖最后由 hi_tek 于 8-9-8 02:24 pm 编辑 ]
花了一个下午,试着编了一个mtext控制字符的过滤代码,请高手精简一下:
cstring effmtext(char* content)
{
int i = 0, j;
cstring con = _t(content);
while((i=con.find('\\',i))!=-1)
{
char ch;
ch = con.getat(i+1);
ch = ch>='a' && ch!='l' && ch!='o' && ch<='z' ? ch-32 : ch;
switch (ch)
{
case 'a':
case 'c':
case 'f':
case 'h':
case '~':
case 'q':
case 't':
j=con.find(';',i);
con=con.left(i)+con.mid(j+1);
break;
case 'l':
case 'l':
case 'o':
case 'o':
case 'p':
con.delete(i,2);
break;
case 's':
con.delete(i,2);
con.delete(con.find(';',i));
break;
default:
i++;
}
}
i=0;
while ((i=con.find('{',i))!=-1)
{
if (con.getat(i-1)!='\\')
con.delete(i);
else
con.delete(i-1);
}
i=0;
while ((i=con.find('}',i))!=-1)
{
if (con.getat(i-1)!='\\')
con.delete(i);
else
con.delete(i-1);
}
if (con.find("\\u+00b0")!=-1)
{
con.replace("\\u+00b0","%%d");
}
if (con.find("\\u+00b1")!=-1)
{
con.replace("\\u+00b1","%%p");
}
if (con.find("\\u+2205")!=-1)
{
con.replace("\\u+2205","%%c");
}
return con;
}
复制代码
[ 本帖最后由 hi_tek 于 8-9-9 11:26 am 编辑 ]


所有的时间均为北京时间。 现在的时间是 02:36 PM.