Как разбить многострочную строку? - PullRequest
0 голосов
/ 16 октября 2010

Когда я пытаюсь разбить строку на список строк, где каждый элемент представляет строку исходной строки, в начале каждой строки я получаю символ «квадрат», который, как мне кажется, является переводом строки или чем-то еще первая строка. Как я могу избежать этого? Мой код выглядит следующим образом:

Dim strList as List(Of String)
If Clipboard.ContainsText Then 
  strList = Clipboard.GetText.Split(Environment.NewLine).ToList
End If

Ответы [ 2 ]

4 голосов
/ 16 октября 2010

Я считаю, что довольно надежный способ прочитать строки строки - это использовать StringReader:

Dim strList As New List(Of String)
Using reader As New StringReader(Clipboard.GetText())
    While reader.Peek() <> -1
        strList.Add(reader.ReadLine())
    End While
End Using

Может быть, это странно; Я не знаю. Это приятно, однако, потому что это освобождает вас от необходимости иметь дело с различными способами представления разрывов строк между различными системами (или между различными файлами в той же системе).

Если сделать еще один шаг вперед, кажется, вы могли бы сделать себе одолжение и обернуть эту функцию в метод многократного расширения:

Public Module StringExtensions
    <Extension()> _
    Public Function ReadAllLines(ByVal source As String) As IList(Of String)
        If source Is Nothing Then
            Return Nothing
        End If

        Dim lines As New List(Of String)
        Using reader As New StringReader(source)
            While reader.Peek() <> -1
                lines.Add(reader.ReadLine())
            End While
        End Using

        Return lines.AsReadOnly()
    End Function
End Module

Тогда ваш код для чтения строк из буфера обмена будет выглядеть так:

Dim clipboardContents As IList(Of String) = Clipboard.GetText().ReadAllLines()
0 голосов
/ 16 октября 2010

В каждой строке есть возврат каретки и перевод строки.символ 10 и символ 13 объединяют их в строку и разделяют, и вы получите то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...