Поиск новой позиции строки в строковой переменной VB.NET с помощью InStr

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

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

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

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

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

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


person Community    schedule 07.08.2009    source источник
comment
вы процитировали vbCrLf? его следует использовать без кавычек.   -  person ba__friend    schedule 07.08.2009


Ответы (4)


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

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

person Thies    schedule 07.08.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
person Fredrik Mörk    schedule 07.08.2009
comment
Это не CR+LF (Char(13) + Char(10)), а не наоборот. - person Guffa; 07.08.2009
comment
@Guffa: ты, конечно, прав; перевернул его. Должно быть жара. - person Fredrik Mörk; 07.08.2009
comment
В vb.net вы также можете использовать отдельные константы vbCr и vbLf вместо вызова функции Chr(). - person Joel Coehoorn; 07.08.2009

Я не думаю, что многое добавлю к этому обсуждению, но оно того стоит... вы также можете использовать "ControlChars", как в "ControlChars.CrLf".

ControlChars @ MSDN

person Richard Lucas    schedule 07.08.2009

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

    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
person medo_best    schedule 07.03.2011