String.Replace不替换vbCrlf

时间:2011-05-30 11:04:26

标签: asp.net

我试图用< br />替换ASP.NET TextBox的Text属性中出现的所有“\ n”使用String.Repalce函数,但它似乎不起作用:

taEmailText.Text.Replace("\n", "<br />")

作为解决方案,我使用的是Regex.Replace:

New Regex("\n").Replace(taEmailText.Text, "<br />")

我的问题是为什么String.Replace找不到“\ n”为什么,即使这个解决方案已在许多网站上提出并且它已经为很多人工作。

谢谢,

3 个答案:

答案 0 :(得分:4)

在.NET中,字符串对象是不可变的,因此String.Replace返回带有替换字符串的新字符串。您需要分配结果:

taEmailText.Text = taEmailText.Text.Replace("\n", "<br />")

此外,当您需要正则表达式时,不是创建新的Regex对象,而是static methods available

result = Regex.Replace(input, pattern, replacement)

编辑(根据评论):

刚试过这个:

Sub Main()
    Dim result As String = "One\nTwo".Replace("\n", "<br />")
    Console.WriteLine(result)
End Sub

结果是:

One<br />Two

答案 1 :(得分:0)

问题是方法调用的结果被忽略了。您应该更仔细地阅读MSDN documentation

  

返回一个新字符串,其中所有出现...

因此:

taEmailText.Text = taEmailText.Text.Replace("\n", "<br />")

答案 2 :(得分:0)

  1. 替换不会更改输入字符串的内容。它返回新创建的字符串。
  2. 您可能想要同时替换\ r和\ n或使用Environment.NewLine常量。

    var replacedText = TextBox1.Text.Replace(Environment.NewLine, "<br />");