haitu 发表于 2006-1-4 11:25:00

如何去掉格式化字符

<P>在CAD中普通的字符串(即没有任何格式信息的字符串)得到后的内容就是显示的内容,但是经过格式化的字符串中包括了很多格式化信息,如换行符,等等~~现在要做的就是提取里面的有用信息字符串,过滤掉格式化的字符,请问有没有比较好的方法可以做,还有,到底有多少种这样的格式字符~~</P>
<P>谢谢回帖~</P>

tjdxtm 发表于 2006-1-4 20:23:00

<P>是MTEXT吗?试试这个</P>
<P>Public Function GetMTextUnformatString(ByVal str As String) As String<BR>'程序功能:按给定的MText字符串返回可用的字符串<BR>On Error Resume Next<BR>&nbsp;&nbsp;&nbsp; Dim pStrs As New Collection<BR>&nbsp;&nbsp;&nbsp; Dim pStack As Collection<BR>&nbsp;&nbsp;&nbsp; Dim n As Integer<BR>&nbsp;&nbsp;&nbsp; Dim pStr As String<BR>&nbsp;&nbsp;&nbsp; Dim pEnd As String<BR>&nbsp;&nbsp;&nbsp; str = "{" &amp; str &amp; "}"<BR>&nbsp;&nbsp;&nbsp; Do While Len(str) &gt; 0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n = IIf(Left(str, 1) = "\", 2, 1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pStr = Left(str, n)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '分割MText字符串为控制字符或单个字符<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If pStr = "}" Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '遇"}"时出栈,直到"{"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pEnd = pStrs(pStrs.Count)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set pStack = New Collection<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pStack.Add "*TlsCad*"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Do While pEnd &lt;&gt; "{"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pStack.Add pEnd, , 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pStrs.Remove pStrs.Count<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pEnd = pStrs(pStrs.Count)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Loop<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pStrs.Remove pStrs.Count<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pStack.Remove pStack.Count<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For Each i In GetRtfString(pStack)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '调用GetRtfString函数返回可用的字符集合<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pStrs.Add i<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next i<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '当前字符入栈<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pStrs.Add Left(str, n)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str = Right(str, Len(str) - n)<BR>&nbsp;&nbsp;&nbsp; Loop<BR>&nbsp;&nbsp;&nbsp; For Each i In pStrs<BR>&nbsp;&nbsp;&nbsp; '合并字符集合为字符串<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If Len(i) = 2 Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '处理\、{、}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetMTextUnformatString = GetMTextUnformatString &amp; Right(i, 1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetMTextUnformatString = GetMTextUnformatString &amp; i<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp; Next i<BR>End Function</P>

雪山飞狐_lzh 发表于 2006-1-7 13:39:00

<P>既然引用的,最好给个说明!</P>
<P>看看这个贴</P>
<P><A href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=20768" target="_blank" >http://bbs.mjtd.com/forum.php?mod=viewthread&tid=20768</A></P>

664571221 发表于 2021-11-19 16:46:33

tjdxtm 发表于 2006-1-4 20:23
是MTEXT吗?试试这个
Public Function GetMTextUnformatString(ByVal str As String) As String'程序功能: ...

大神你这个是啥语言写的啊

bluelover 发表于 2021-11-19 17:25:00

你在VB版块问还问别人用啥语言写的,哈哈哈哈哈
页: [1]
查看完整版本: 如何去掉格式化字符