在字符串中删除双换行符

3
我正在开发一个asp.net Web应用程序,我有一个字符串(从数据库中获取的值),其中包含多行文本,我将其放入一个多行文本框中(textarea)。现在问题是,在字符串中有多个空行,因此我只想删除双重换行符。以下是我的文本框示例:
+++++++++++++++++++++++++++++++++++++++++++++++++++++
{empty}
{empty}
'这是第3行文本框中的一些文本
'第4行的一些文本
{empty}
'第6行的一些文本
{empty}
{empty}
'第9行的一些文本
{empty}
+++++++++++++++++++++++++++++++++++++++++++++++++++++
现在,我想要删除第1和第2行以及第7和第8行。谢谢您的帮助!
4个回答

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中测试通过。


0
以下代码可以删除文本框开头和任何位置的连续两个空行。
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行。

0

这将清除所有空行。

    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

0
我通常的做法是将所有不同类型的换行符转换为一个我可以处理的单一换行符,然后去重并转换回 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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接