VB.NET:用另一个字符串替换返回字符所需的正则表达式
我试图用字符串VB.NET:用另一个字符串替换返回字符所需的正则表达式,vb.net,regex,textbox,multiline,carriage-return,Vb.net,Regex,Textbox,Multiline,Carriage Return,我试图用字符串“,”替换从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
“,
”
替换从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
函数Blah(ByVal strInput作为字符串)作为字符串
作为对象的Dim-rexCR
rexCR=CreateObject(“VBScript.RegExp”)
rexCR.Pattern=“\r”
rexCR.Global=True
Blah=rexCR.Replace(strInput,“,
”)
端函数
已尝试搜索以下任何字符,但仍然没有成功:\r\n\r\c\cM\x0d
问题似乎是函数/表达式没有检测到文本中的任何回车,我不知道为什么?
我知道这个函数可以工作,因为我可以在里面放一个不同的表达式作为测试,它是可以的
有什么想法吗?正常的
strInput.Replace(vbCrLf,
”
不带正则表达式如何?正常的strInput.Replace(vbCrLf,
”
不带正则表达式如何:
Function Blah(ByVal strInput As String) As String
return strInput.Replace(Environment.NewLine, "<br />")
End Function
函数Blah(ByVal strInput作为字符串)作为字符串
返回strInput.Replace(Environment.NewLine,
)
端函数
那么:
Function Blah(ByVal strInput As String) As String
return strInput.Replace(Environment.NewLine, "<br />")
End Function
函数Blah(ByVal strInput作为字符串)作为字符串
返回strInput.Replace(Environment.NewLine,
)
端函数
其他人已经为您的问题提供了很好的解决方案。一般来说,我想解释一下VB.NET没有像C一样的字符串转义序列(\n、\r、\t、…)。类似于--唯一可以转义的字符是双引号(通过将其加倍)
相反,您必须使用VB常量(例如
vbCrLf
,vbTab
)或.net常量(例如Environment.NewLine
)和字符串连接(“Hello World”和vbCrLf
,而不是“Hello World\n”)。其他人已经为您的问题提供了很好的解决方案。一般来说,我想解释一下VB.NET没有像C一样的字符串转义序列(\n、\r、\t、…)。类似于--唯一可以转义的字符是双引号(通过将其加倍)
相反,您必须使用VB常量(例如
vbCrLf
,vbTab
)或.net常量(例如Environment.NewLine
)和字符串连接(“Hello World”和vbCrLf
,而不是“Hello World\n”)。为什么需要正则表达式进行简单的搜索和替换?我不需要这样做。我刚刚在其他地方做了几个正则表达式,只是编辑了一个复制粘贴,然后固执地想弄清楚为什么它不起作用。然而,我刚刚尝试了下面两个例子,分别来自S.Mark和ck,它们都不适合我。多行文本框存储与CRs相关的文本的方式是否有所不同?仅供参考:如果其他人遇到此问题,我发现如果您使用VS2008,可以让VB.NET regexs接受\r\n和其他转义字符(在其他情况下也可能,这正是我正在使用的)。转到“项目属性”,在“引用”选项卡上,选中“导入的命名空间”部分下的System.Text.RegularExpressions。为什么需要正则表达式进行简单的搜索和替换?我不需要这样做。我刚刚在其他地方做了几个正则表达式,只是编辑了一个复制粘贴,然后固执地想弄清楚为什么它不起作用。然而,我刚刚尝试了下面两个例子,分别来自S.Mark和ck,它们都不适合我。多行文本框存储与CRs相关的文本的方式是否有所不同?仅供参考:如果其他人遇到此问题,我发现如果您使用VS2008,可以让VB.NET regexs接受\r\n和其他转义字符(在其他情况下也可能,这正是我正在使用的)。转到“项目属性”并在“引用”选项卡上,选中“导入的命名空间”部分下的System.Text.RegularExpressions旁边的复选框。上面使用vb常量的解决方案对我不起作用,尽管我可以看出它们对其他人也起作用。请您澄清一下,这是因为当文本框中的文本被分配给变量VB.NET时,省略了回车符吗?它不应该。你能看看调试器中的字符串吗?(有点像Console.Writeline(strInput)
,然后看着VisualStudio中的“Output”工具窗口)我真是个白痴。我之前有另一个代码堆,它正在清除一堆字符,并且正在清除CRs>。\u<如果不是你的建议,我可能很久都不会注意到!我能给每个人打分吗?上面使用vb常量的解决方案对我不起作用,尽管我可以看到它们对其他人也起作用。请您澄清一下,这是因为当文本框中的文本被分配给变量VB.NET时,省略了回车符吗?它不应该。你能看看调试器中的字符串吗?(有点像Console.Writeline(strInput)
,然后看着VisualStudio中的“Output”工具窗口)我真是个白痴。我之前有另一个代码堆,它正在清除一堆字符,并且正在清除CRs>。\u<如果不是你的建议,我可能很久都不会注意到!我能给每个人打分吗?