Поиск новой строки в строковой переменной VB.NET с использованием InStr - PullRequest
4 голосов
/ 07 августа 2009

У меня есть приложение в VB.NET, которое получает строковые данные из базы данных. Эта строка содержит данные, которые выглядят так:

"Это обновление:
У меня проблема с приложением "

Мне нужна только часть данных, которые идут после новой строки, т. Е. «У меня проблема с приложением».

Для этого я пытаюсь найти позицию, используя InStr , где строка содержит данные в новой строке. Я перепробовал много вариантов, но они не работают.

Я использовал vbCrLf, Chr (13), \ r \ n, \ n, <br/>, Environment.NewLine, но ни один из них не работает.

Как я могу получить нужные мне данные?

Ответы [ 4 ]

2 голосов
/ 07 августа 2009

Используйте vbCrLf, а не "vbCrLf"

Может также случиться, что у вас есть только перевод строки или возврат каррига, так что использование Chr (10) и Chr (13) также может быть лучшим вариантом.

2 голосов
/ 07 августа 2009

Символ новой строки может быть представлен либо просто символом новой строки (Chr(10)), либо парой возврата каретки / перевода строки (Chr(13) + Chr(10)). В зависимости от источника данных это, конечно, может варьироваться. Один из способов добиться этого - разделить строку на эти два символа с возможностью удаления пустых элементов, отбросить первый и объединить остальные вместе с символами новой строки между ними:

ReadOnly separators As Char() = New Char() {Chr(10), Chr(13)}
Private Function StripFirstLine(ByVal input As String) As String
    Dim parts() As String = input.Split(separators, StringSplitOptions.RemoveEmptyEntries)

    If parts.Length > 1 Then
        Return String.Join(Environment.NewLine, parts, 1, parts.Length - 1)
    Else
        Return input
    End If

End Function
1 голос
/ 07 марта 2011

Этот скрипт возвращает строку в строках, а затем добавляет ее в список:

    Dim fileContents As String
    fileContents = My.Computer.FileSystem.ReadAllText("d:\a.txt")
    TextBox2.Text = fileContents
    Dim a As Integer = 1

    For i = 1 To fileContents.Length
        Dim xx As String = Mid(fileContents, i, 1)
        If xx = Chr(10) Then
            If Mid(fileContents, i - 1, 1) = Chr(13) Then
                ListBox1.Items.Add(Mid(fileContents, a, (i - a) - 1))
                a = i
            End If
        End If
    Next
1 голос
/ 07 августа 2009

Не думаю, что я много добавляю к этому обсуждению, но ради чего оно стоит ... вы также можете использовать «ControlChars» как в «ControlChars.CrLf».

ControlChars @ MSDN

...