VB.NET: регулярное выражение, необходимое для замены возвращаемого символа другой строкой - PullRequest
1 голос
/ 21 января 2010

Я пытаюсь заменить все символы возврата каретки в строке, полученной из многострочного текстового поля в форме 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

Проблема, похоже, заключается в том, что функция / выражение не обнаруживает никаких возвратов каретки в тексте, и я понятия не имею, почему? Я знаю, что функция работает, так как я могу поместить другое выражение в качестве теста, и это нормально

Есть идеи?

Ответы [ 3 ]

5 голосов
/ 21 января 2010

Как насчет нормальных strInput.Replace(vbCrLf,",<BR>") без регулярных выражений?

4 голосов
/ 21 января 2010

Другие уже предоставили хорошие решения вашей проблемы. В качестве общего замечания я хотел бы объяснить, что VB.NET не имеет escape-последовательностей строк (\ n, \ r, \ t, ...), таких как C #. Строковые литералы в VB.NET аналогичны дословным строковым литералам в C # - единственным символом, который можно экранировать, является двойная кавычка (удваивая ее).

Вместо этого вы должны использовать константы VB (например, vbCrLf, vbTab) или .net (например, Environment.NewLine) и конкатенацию строк ("Hello World" & vbCrLf вместо `" Hello World \ n ").

3 голосов
/ 21 января 2010

Как насчет:

Function Blah(ByVal strInput As String) As String
  return strInput.Replace(Environment.NewLine, "<br />")
End Function
...