Vbscript 使用regexp在VBS中识别和删除字符串中的字符

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//-

我已经绞尽脑汁半天了,研究regexp来解决下面的问题,但毫无效果,所以希望你们能帮助我

我有一个在部分之间用“/”分隔的波纹管字符串(也可以在任何地方随机插入“/”。字符串结尾总是有0到10个斜杠。棘手的部分是删除最后剩余的斜杠“//+”,而不删除文本之间的双斜杠“/”

示例1斜杠结尾:

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函数替代方案。