Найти текст и заменить гиперссылкой
Я пытаюсь заменить текст в теле шаблоном ASA### # @ @ на ASA####@@(гиперссылка)
У меня есть код, который работает, если в теле есть только один паттерн.Но если у меня есть много шаблонов, таких как
ASA3422df
ASA2389ds
ASA1265sa
Все тело заменяется на
ASAhuyi65
Мой код здесь.
Dim strID As String
Dim Body As String
Dim objMail As Outlook.MailItem
Dim temp As String
Dim RegExpReplace As String
Dim RegX As Object
strID = MyMail.EntryID
Set objMail = Application.Session.GetItemFromID(strID)
Body = objMail.HTMLBody
Body = Body + "Test"
objMail.HTMLBody = Body
Set RegX = CreateObject("VBScript.RegExp")
With RegX
.Pattern = "ASA[0-9][0-9][0-9][0-9][a-z][a-z]"
.Global = True
.IgnoreCase = Not MatchCase
End With
'RegExpReplace = RegX.Replace(Body, "http://www.code.com/" + RegX.Pattern + "/ABCD")
'if the replacement is longer than the search string, future .FirstIndexes will be off
Offset = 0
'Set matches = RegX.Execute(Body)
For Each m In RegX.Execute(Body)
RegExReplace = "<a href=""http://www.code.com/" & m.Value & """>" & m.Value & "</a>"
Next
Set RegX = Nothing
objMail.HTMLBody = RegExReplace
objMail.Save
Set objMail = Nothing
End Sub
2 ответа:
Похоже, что вы изначально были на правильном пути с этой закомментированной строкой. С помощью метода
Replace
не нужно перебирать совпадения (для этого используется флагGlobal
), и можно использовать обратные ссылки, такие как$1
,$2
, и т.д. как заполнители для совпадающих подстрок. Как и в большинстве языков, есть специальная страница на Regular-Expressions.info для VBScript.Следующее С помощью do what you are looking for:
body = "Blah blah ASA3422df ASA2389ds ASA1265sa" body = RegX.Replace(body, "<a href='http://www.code.com/$1'>$1</a>") Debug.Print body '-> Blah blah <a href='http://www.code.com/ASA3422df'>ASA3422df</a> <a href='http://www.code.com/ASA2389ds'>ASA2389ds</a> <a href='http://www.code.com/ASA1265sa'>ASA1265sa</a>
Это заменяет совпадения (и только спички) со связью, а все остальное оставляет нетронутым.
В codedawn есть фантастическая надстройка для Excel, которая дает вам тот же поиск и замену пользовательского интерфейса, который вы знаете и любите, но для регулярных выражений. http://www.codedawn.com/excel-add-ins.php
Хотя это не совсем помогает ответить на ваш вопрос, это полезно для опробования регулярных выражений одно за другим без изменения данных или кода.