高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】获取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 编辑 ]
|