- UID
- 76071
- 积分
- 1505
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2003-8-30
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Public Sub SuperReplace()
'支持通配符*格式的替换
'例:*(*)->*或A*B*->B*C*
'保证替换前后*的数量相同
On Error Resume Next
Dim ss As AcadSelectionSet
Dim str As String
Dim pStart As String, pEnd As String
Dim i As AcadEntity, j
Dim ft(1) As Integer, fd(1)
Dim pSS, pES
Dim pStrs() As String
Dim pSpec As String
ThisDrawing.SelectionSets("*TlsText*").Delete
Set ss = ThisDrawing.SelectionSets.Add("*TlsText*")
pStart = Trim(ThisDrawing.Utility.GetString(False, "替换前:"))
pEnd = Trim(ThisDrawing.Utility.GetString(False, "替换后:"))
pSS = Split(pStart, "*")
pES = Split(pEnd, "*")
pSpec = Replace(pStart, "`", "``")
pSpec = Replace(pSpec, "[", "`[")
pSpec = Replace(pSpec, "]", "`]")
pSpec = Replace(pSpec, ",", "`,")
pSpec = Replace(pSpec, "@", "`@")
pSpec = Replace(pSpec, "~", "`~")
pSpec = Replace(pSpec, ".", "`.")
pSpec = Replace(pSpec, "?", "`?")
ft(0) = 0: fd(0) = "*Text"
ft(1) = 1: fd(1) = pSpec
ss.Select acSelectionSetAll, , , ft, fd
For Each i In ss
str = i.TextString
ReDim pStrs(UBound(pSS) + 1) As String
For j = 0 To UBound(pSS)
pStrs(j) = LeftStr(str, pSS(j)) & pES(j)
str = RightStr(str, pSS(j))
Next j
pStrs(UBound(pSS) + 1) = str
i.TextString = Join(pStrs, "")
Next i
ThisDrawing.SelectionSets("*TlsText*").Delete
End Sub
Public Function LeftStr(ByVal String1 As Variant, ByVal String2 As Variant)
On Error Resume Next
LeftStr = Left(String1, InStr(String1, String2) - 1)
If Err Then LeftStr = ""
End Function
Public Function RightStr(ByVal String1 As Variant, ByVal String2 As Variant)
On Error Resume Next
RightStr = Right(String1, Len(String1) - Len(String2) - InStr(String1, String2) + 1)
If Err Then RightStr = ""
End Function |
|