ВБ.НЕТ:Регулярное выражение необходимо для замены возвращаемого символа другой строкой

StackOverflow https://stackoverflow.com/questions/2107874

Вопрос

Я пытаюсь заменить все символы возврата каретки в строке, полученной из многострочного текстового поля в форме 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top