Я считаю, что довольно надежный способ читать строки строки является использование 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()
Hmm .. приятный идея. Благодаря! :) – bretddog
Вау, я не ожидал узнать что-то полезное из этого вопроса. :) Действительно хороший материал. Раньше я никогда не делал таких расширений, поэтому для меня это станет отличным инструментом. – bretddog
+1 для показа «AsReadOnly()» –