【问题标题】:remove double linebreaks in string删除字符串中的双换行符
【发布时间】:2011-01-21 11:46:18
【问题描述】:

我正在开发一个 asp.net Web 应用程序,我有一个字符串(其中有一个来自数据库的值),我将多行放入具有多行类型的 TextBox 中。 (文本区域)

现在的问题是,字符串中有多行,有很多空白。所以我只想删除双换行符。

我的文本框示例:

++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++
{空}
{空}
'这是第 3 行文本框中的一些文本
'第 4 行的一些文字
{空}
'第 6 行的一些文字
{空}
{空}
'第 9 行的一些文本
{空}
++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++
现在我想以某种方式删除第 1 行和第 2 行,以及第 7 和 8 行

提前致谢

【问题讨论】:

    标签: asp.net vb.net string text


    【解决方案1】:

    解决办法如下:

    'now rebuild your example string
    Dim Empty As String = Chr(13) & Chr(10)
    
    Dim Sb As New System.Text.StringBuilder
    Sb.Append("+++++++++++++++++++++++++++++++++++++++++++++++++++++")
    Sb.Append(Empty)
    Sb.Append(Empty)
    Sb.Append(Empty & "This is some text in the textbox on line 3")
    
    Sb.Append(Empty & "some text on line 4")
    Sb.Append(Empty)
    Sb.Append(Empty & "some text on line 6")
    Sb.Append(Empty)
    Sb.Append(Empty)
    Sb.Append(Empty & "some text on line 9")
    Sb.Append(Empty)
    Sb.Append(Empty)
    Sb.Append("+++++++++++++++++++++++++++++++++++++++++++++++++++++")
    Dim YourString As String = Sb.ToString
    MessageBox.Show(YourString)
    
    'now replace the double empty
    Dim result As String
    result = YourString.Replace(Empty & Empty & Empty, Empty)
    MessageBox.Show(result)
    

    注意:此解决方案已在 Visual Studio 2010 中进行了测试。

    【讨论】:

      【解决方案2】:

      这将消除所有空行。

          Dim splt() As Char = New Char() {ControlChars.Lf, ControlChars.Cr}
          Dim lines() As String = TextBox1.Text.Split(splt, StringSplitOptions.RemoveEmptyEntries)
          TextBox1.Lines = lines
      

      这看起来会去掉多个换行符

          Dim s As String = TextBox1.Text.Replace(Environment.NewLine, ControlChars.Cr)
          Dim lines As New List(Of String)
          lines.AddRange(s.Split(New Char() {ControlChars.Cr}))
      
          For x As Integer = lines.Count - 1 To 1 Step -1
              If lines(x) = "" AndAlso lines(x - 1) = "" Then
                  lines.RemoveAt(x)
              End If
          Next
          TextBox1.Lines = lines.ToArray
      

      【讨论】:

        【解决方案3】:

        我通常这样做的方法是将所有不同的换行符转换为一个我可以管理、删除重复并转换回 vbNewLine 的单个换行符:

            '//Convert all line break types to vbCr/ASCII 13
            T = T.Replace(vbNewLine, vbCr).Replace(vbLf, vbCr)
            '//Loop until all duplicate returns are removed
            Do While T.Contains(vbCr & vbCr)
                T = T.Replace(vbCr & vbCr, vbCr)
            Loop
            '//Check to see if the string has one at the start to remove
            If T.StartsWith(vbCr) Then T = T.TrimStart(Chr(13))
        
            '//Convert back to standard windows line breaks
            T = T.Replace(vbCr, vbNewLine)
        

        【讨论】:

          【解决方案4】:

          以下代码删除了开头的双空行,以及文本框中任意位置的双空行。

          Dim myText as String = TextBox1.Text
          myText = Regex.Replace(myText, "^(\r\n\r\n)(.*)", "$2")
          myText = Regex.Replace(myTextt, "(.*\r\n)(\r\n\r\n)(.*)", "$1$3")
          TextBox1.Text = myText
          

          在给出的示例中,它将删除第 1 行和第 2 行,以及第 7 和第 8 行。

          【讨论】:

            猜你喜欢
            • 2011-10-13
            • 1970-01-01
            • 1970-01-01
            • 2012-04-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多