ВБ.НЕТ:Регулярное выражение необходимо для замены возвращаемого символа другой строкой
-
22-09-2019 - |
Вопрос
Я пытаюсь заменить все символы возврата каретки в строке, полученной из многострочного текстового поля в форме Windows, на строку ", <BR>"
так что когда я использую строку в некотором HTML, она отображается правильно.
Function Blah(ByVal strInput As String) As String
Dim rexCR As Object
rexCR = CreateObject("VBScript.RegExp")
rexCR.Pattern = "\r"
rexCR.Global = True
Blah = rexCR.Replace(strInput, ",<BR>")
End Function
Пробовал искать любой из следующих символов, но все равно безуспешно:
\r|\n|\r\c|\cM|\x0d
Кажется, проблема в том, что функция/выражение не обнаруживает возврата каретки в тексте, и я понятия не имею, почему?Я знаю, что функция работает, поскольку я могу поместить туда другое выражение в качестве теста, и все в порядке.
Есть идеи?
Решение
Другие уже предложили хорошие решения вашей проблемы.В качестве общего замечания я хотел бы пояснить, что в VB.NET нет escape-последовательностей строк ( , , ,...), как в C#. Строковые литералы в VB.NET похожи на дословные строковые литералы в C# -- единственный символ, который можно экранировать, — это двойная кавычка (путем ее удвоения).
Вместо этого вам придется использовать константы VB (например. vbCrLf
, vbTab
) или константы .net (например. Environment.NewLine
) и конкатенация строк ("Hello World" & vbCrLf
вместо «Hello World
»).
Другие советы
Как насчет нормального strInput.Replace(vbCrLf,",<BR>")
без регулярного выражения?
Как насчет:
Function Blah(ByVal strInput As String) As String
return strInput.Replace(Environment.NewLine, "<br />")
End Function