如何拆分多行字符串?

时间:2010-10-16 19:22:23

标签: vb.net string split

当我尝试将一个字符串拆分成一个字符串列表,其中每个元素代表一个初始字符串的一行时,我得到的是“正方形”字符,我认为这是一个换行符或其他东西,在每行的开头,除了第一行。我怎么能避免这种情况?我的代码如下:

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

2 个答案:

答案 0 :(得分:4)

我发现读取字符串行的一种非常可靠的方法是使用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()

答案 1 :(得分:0)

每条线都有一个回车和换行符。字符10和字符13将它们组合成一个字符串并分开,你将得到你需要的东西。