удалить двойные разрывы строк в строке - PullRequest
3 голосов
/ 21 января 2011

Я разрабатываю веб-приложение asp.net, у меня есть строка (со значением в ней из базы данных) с несколькими строками, которые я помещаю в TextBox с многострочным типом. (Текстовое поле)

Теперь проблема в том, что в строке много строк, с большим количеством пустого пространства. поэтому я хочу удалить только двойные переводы строк.

пример моего текстового поля:

+++++++++++++++++++++++++++++++++++++++++++++++ ++++++
{Пустой}
{Пустой}
«Это некоторый текст в текстовом поле в строке 3
текст в строке 4
{Пустой}
текст в строке 6
{Пустой}
{Пустой}
текст в строке 9
{Пустой}
++++++++++++++++++++++++++++++++++++++++++++++++++ +++
теперь как-то я хочу удалить строки 1 и 2, а строки 7 и 8

заранее спасибо

Ответы [ 4 ]

1 голос
/ 27 июня 2011

Вот решение:

'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 голосов
/ 21 января 2011

Обычно я делаю это, чтобы преобразовать все разрывы строк в один, которым я могу управлять, восстанавливать и преобразовывать обратно в 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)
0 голосов
/ 09 февраля 2011

Следующий код удаляет двойные пустые строки в начале, а также двойные пустые строки в любом месте текстового поля.

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 голосов
/ 21 января 2011

Это избавит от всех пустых строк.

    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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...