Vbscript 使用regexp在VBS中识别和删除字符串中的字符
我已经绞尽脑汁半天了,研究regexp来解决下面的问题,但毫无效果,所以希望你们能帮助我 我有一个在部分之间用“/”分隔的波纹管字符串(也可以在任何地方随机插入“/”。字符串结尾总是有0到10个斜杠。棘手的部分是删除最后剩余的斜杠“//+”,而不删除文本之间的双斜杠“/” 示例1斜杠结尾:Vbscript 使用regexp在VBS中识别和删除字符串中的字符,vbscript,Vbscript,我已经绞尽脑汁半天了,研究regexp来解决下面的问题,但毫无效果,所以希望你们能帮助我 我有一个在部分之间用“/”分隔的波纹管字符串(也可以在任何地方随机插入“/”。字符串结尾总是有0到10个斜杠。棘手的部分是删除最后剩余的斜杠“//+”,而不删除文本之间的双斜杠“/” 示例1斜杠结尾: strEmail = "TT44 4 x VCK TTT30 FAX//IT/40170539/CA1211 dd 15.08.12//E1333/City/TS///LC30//75735/01364//-
strEmail = "TT44 4 x VCK TTT30 FAX//IT/40170539/CA1211 dd 15.08.12//E1333/City/TS///LC30//75735/01364//---//548657,14-E2424-//34-1/ss//Customer1//LINE1//75739/00096//---//////"
strEmail = "TT44 4 x VCK TTT30 FAX//IT/40170539/CA1211 dd 15.08.12//E1333/City/TS///LC30//75735/01364//---//548657,14-E2424-//34-1/ss//Customer1//LINE1//75739/00096//---"
示例2无斜杠结尾:
strEmail = "TT44 4 x VCK TTT30 FAX//IT/40170539/CA1211 dd 15.08.12//E1333/City/TS///LC30//75735/01364//---//548657,14-E2424-//34-1/ss//Customer1//LINE1//75739/00096//---//////"
strEmail = "TT44 4 x VCK TTT30 FAX//IT/40170539/CA1211 dd 15.08.12//E1333/City/TS///LC30//75735/01364//---//548657,14-E2424-//34-1/ss//Customer1//LINE1//75739/00096//---"
斜杠计数可以是动态的,但总是从0到10结束。我认为可能有一个简单的解决方案,不需要regexp。比如:
如果任何斜杠后面没有更多的字母数字字符,请删除字母数字字符后面的文本
谢谢你和问候
Option Explicit
Dim strEmail
strEmail = "TT44 4 x VCK TTT30 FAX//IT/40170539/CA1211 dd 15.08.12//E1333/City/TS///LC30//75735/01364//---//548657,14-E2424-//34-1/ss//Customer1//LINE1//75739/00096//---//////"
With New RegExp
.Pattern = "/+$"
.IgnoreCase = False
.Global = True
strEmail = .Replace(strEmail, "")
End With
WScript.Echo strEmail
指示结束斜杠位于行的末尾($
)
编辑以包含迭代非正则表达式解决方案
Option Explicit
Dim strEmail
strEmail = "TT44 4 x VCK TTT30 FAX//IT/40170539/CA1211 dd 15.08.12//E1333/City/TS///LC30//75735/01364//---//548657,14-E2424-//34-1/ss//Customer1//LINE1//75739/00096//---//////"
Dim cutPoint
cutPoint = Len(strEmail)
Do While cutPoint > 0
If Not Mid(strEmail,cutPoint,1) = "/" Then Exit Do
cutPoint = cutPoint - 1
Loop
strEmail = Left( strEmail, cutPoint )
WScript.Echo strEmail
再次编辑以包含纯VBScript函数替代
Option Explicit
Dim strEmail
strEmail = "TT44 4 x VCK TTT30 FAX//IT/40170539/CA1211 dd 15.08.12//E1333/City/TS///LC30//75735/01364//---//548657,14-E2424-//34-1/ss//Customer1//LINE1//75739/00096//---//////"
strEmail = Left(strEmail,InStrRev(strEmail, Right(Replace(strEmail,"/",""),1)))
WScript.Echo strEmail
在步行回家后,我想出了一个简单的解决方案:
Dim slash_count, ch
for i= 1 to len(strEmail)
ch = mid(strEmail,i,1)
if ch = "/" Then
slash_count = slash_count + 1
Else
slash_count = 0
End if
Next
strEmail = left(strEmail,len(strEmail)-slash_count)
msgbox(strEmail)
msgbox(slash_count)
你好谢谢,我看到了逻辑,但是当我运行它时,它并没有真正取代斜杠。我还发布了另一个避免regexp的解决方案,但我将您标记为regexp的答案。@Trm,嗯,准确地说,它正在替换斜杠。它没有做的是将其再次存储在变量中。这个值只得到了回应。无论如何,我已经更改了答案以保存更改,并包含了一个迭代解决方案(因为“问题”位于字符串的末尾,所以从末尾开始,然后向后返回更容易/更快)和一个直接vbscript函数替代方案。