Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.NET:用另一个字符串替换返回字符所需的正则表达式_Vb.net_Regex_Textbox_Multiline_Carriage Return - Fatal编程技术网

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<如果不是你的建议,我可能很久都不会注意到!我能给每个人打分吗?