Я считаю, что довольно надежный способ прочитать строки строки - это использовать 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()