【问题标题】:Remove carriage return from string从字符串中删除回车符
【发布时间】:2011-06-21 20:00:31
【问题描述】:

我想在字符串中插入以下内容

<p>some text here</p>
<p>some text here</p>
<p>some text here</p>

我希望它变成如下的字符串

<p>some text here</p><p>some text here</p><p>some text here</p>

即没有回车。

我如何做到这一点?

【问题讨论】:

    标签: .net asp.net vb.net


    【解决方案1】:

    怎么样:

    string s = orig.Replace("\n","").Replace("\r","");
    

    应该处理常见的行尾。

    或者,如果您对该字符串进行了硬编码或在运行时对其进行组装 - 只需不要一开始就添加换行符。

    【讨论】:

    • 基本上,我使用的是 ckeditor,它在它生成的 html 中插入回车符。由于各种原因,这导致我后来出现问题,我不知道是否可以更改 ckeditor 中的设置以停止生成回车符。另外,在服务器端删除回车可能更安全,对吧?
    • 它正在工作。 .Replace("\r\n", string.Empty).Replace("\n", string.Empty)
    【解决方案2】:

    如果您也想删除行首/行尾的空格(在缩短 html 时很常见),您可以尝试:

    string.Join("",input.Split('\n','\r').Select(s=>s.Trim()))
    

    其他使用简单的Replace Marc 建议。

    【讨论】:

    • 作为观察,这将起作用,但涉及 2 个数组和 2 个 n 中间字符串;但他们都应该有资格获得 gen-0 收藏,所以仍然很便宜
    • 好点,我可能最终也需要删除空格。感谢您指出这一点。
    • 这是(我认为)删除字符串中硬 \n 和 \r 字符的最佳方法。
    【解决方案3】:

    由于您使用的是 VB.NET,因此您需要以下代码:

    Dim newString As String = origString.Replace(vbCr, "").Replace(vbLf, "")
    

    您可以在 C# 中使用转义字符(\r\n),但这些在 VB.NET 中不起作用。您必须改用等效的常量(vbCrvbLf)。

    【讨论】:

    • 我没有注意到 VB.NET 标记,但因为它在那里 +1。
    • 很好,但是标签怎么样。如何删除字符串中的制表符?
    【解决方案4】:

    将您的字符串分配给一个变量,然后将换行符和回车符替换为空,如下所示:

     myString = myString.Replace(vbCrLf, "")
    

    【讨论】:

    • 你试过了吗?它不适用于给出的示例。我怀疑这是因为vbCrLf 实际上被定义为vbCr + vbLf,它不存在于字符串中,但我不确定。将它们拆分是从字符串中删除行返回的唯一解决方案;请参阅我的答案以获取示例。
    【解决方案5】:

    在 VB.NET 中有一个vbCrLf constant 用于换行:

    Dim s As String = "your string".Replace(vbCrLf, "")
    

    【讨论】:

    • 你试过了吗?它不适用于给出的示例。我怀疑这是因为vbCrLf 实际上被定义为vbCr + vbLf,它不存在于字符串中,但我不确定。将它们拆分是从字符串中删除行返回的唯一解决方案;请参阅我的答案以获取示例。
    • 为了完整性:对于“正常”的 dotnet 框架,有 Environment.Newline 可能是 CRLF。也正如@CodyGray 所说:它是 2 个字符。
    • 这适用于删除 Visual Studio 2013 标签中的换行符。
    【解决方案6】:

    你也可以试试:

    string res = string.Join("", sample.Split(Environment.NewLine.ToCharArray())
    

    Environment.NewLine 应该使其独立于平台。

    推荐阅读:

    Environment.NewLine 属性

    【讨论】:

      【解决方案7】:

      使用正则表达式怎么样?

      var result = Regex.Replace(input, "\r\n", String.Empty)
      

      如果您只想在最后删除新行,请使用此

      var result = Regex.Replace(input, "\r\n$", String.Empty)
      

      【讨论】:

        【解决方案8】:

        我今天在我的代码中遇到了同样的问题,并尝试了它的魅力。

        .Replace("\r\n")
        

        【讨论】:

          【解决方案9】:

          对于 VB.net

          vbcrlf = environment.newline...

          Dim MyString As String = "This is a Test" & Environment.NewLine & " This is the second line!"

          Dim MyNewString As String = MyString.Replace(Environment.NewLine,String.Empty)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-05-20
            • 1970-01-01
            • 2011-03-04
            • 2017-12-11
            • 1970-01-01
            • 1970-01-01
            • 2010-10-26
            • 2011-04-17
            相关资源
            最近更新 更多