带换行符的拆分方法 vb.net

Split method with line breaker vb.net

我有一个 checkedlistbox 来填充文本框值,但我有一些问题,因为如果我将文本框中的文本粘贴到 word 文件中,它带有换行符,而不仅仅是空格。也许这就是未正确填写选中列表框的原因。

Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick

    Dim separated = TextBox2.Text.Split(vbNewLine & " ")

    CheckedListBox1.Items.Clear()
    CheckedListBox1.Items.AddRange(separated)
    CheckedListBox1.Items.Remove(vbCrLf)
    CheckedListBox1.Items.Remove("#")
    CheckedListBox1.Items.Remove("PI")

End Sub

我怎样才能摆脱这个问题?如果我将值粘贴到 word 中,它们会像这样:

去掉所有空格再拆分

Dim separated = TextBox2.Text.Replace(" ", "").Split(vbNewLine)

更新删除标签

char tabs = '\u0009';
Dim separated = TextBox2.Text.Replace(" ", "").Replace(tabs, "").Split(vbNewLine)

您需要在拆分前删除所有不需要的项目。 所以......基于你的例子

char tabs = '\u0009';
StrippedText = TextBox2.Text.Replace(" ", "").Replace(tabs, "").Replace("P1" & vbCRLF & vbCRLF, "").Replace(vbCRLF & "#" & vbCRLF, "")
Dim separated = StrippedText.Split(vbNewLine)

您当前正在分隔 space 后跟新行的字符串。此字符串周围的任何其他 space 都包含在输出中。您想使用不同版本的 Split,列出每个字符,以便可以使用这些字符中的任何一个来拆分字符串:

Dim separated = TextBox2.Text.Split(vbCr, vbLf, vbTab, " "c)

这会将 space、制表符、换行符或回车 return 中的一个或多个视为拆分,并且不会将它们中的任何一个包含在它 return 的字符串中。然而,它会 return 一些空字符串,所以你需要单独添加字符串,过滤掉它们。其余代码可以替换为:

    CheckedListBox1.Items.Clear()
    For Each item In separated
        If item <> "" Then CheckedListBox1.Items.Add(item)
    Next