使用断路器vb.net的拆分方法

时间:2016-04-05 09:40:25

标签: vb.net checkedlistbox

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

Checkedlistbox and textbox

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中,它们会像这样: wordprintscreen

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:1)

摆脱所有空格,然后拆分

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)