VB.NET:正则表达式需要用另一个字符串替换返回字符

时间:2010-01-21 08:43:39

标签: vb.net regex textbox multiline carriage-return

我正在尝试使用字符串", <BR>"替换从Windows窗体中的多行文本框获取的字符串中的所有回车符,这样当我在某些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 个答案:

答案 0 :(得分:5)

没有正则表达式的正常strInput.Replace(vbCrLf,",<BR>")怎么样?

答案 1 :(得分:4)

其他人已经为您的问题提供了很好的解决方案。作为一般性评论,我想解释说VB.NET没有像C#那样的字符串转义序列(\ n,\ r,\ t,...)。 String literals in VB.NETverbatim string literals in C#类似 - 唯一可以转义的字符是双引号(通过加倍)。

相反,您必须使用VB常量(例如vbCrLfvbTab)或.net常量(例如Environment.NewLine)和字符串连接("Hello World" & vbCrLf而不是` “Hello World \ n”)。

答案 2 :(得分:3)

怎么样:

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