2016-04-05 33 views
0

我有一個checkedlistbox來填充文本框的值,但我有一些問題,如果我從文本框中粘貼來自文本文件的文本,它帶有折線符,而不僅僅是空格。也許這就是爲什麼選中的列表框沒有被正確填充。分割方法與斷路器vb.net

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 

我怎樣才能擺脫這個問題的?如果我在字粘貼值他們來是這樣的: wordprintscreen

+0

所以你想從文本框中取出每個項目,它應該出現在ChecedListBox中,對嗎?你如何期望分割TextBox中的項目?按行?或每個單詞分開? –

+0

每個單詞分開! – noidea

回答

2

您正在分離,其中一個空格後面是一個新行的字符串。輸出中包含此字符串周圍的任何其他空格。你想使用不同版本的斯普利特,列出每一個字符,這樣任何這些字符可以被用來分割字符串:

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 
+0

不行,不起作用。在checkedlistbox中的項目之間給我更多的空間.. – noidea

+0

您可能還需要檢查Split所返回的空字符串。我會更新 –

+1

@StuartWhhousehouse - 清潔選項然後我的建議....忘了你可以直接使用vbTab。 – Mych

1

擺脫所有的空間,然後分割

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

UPDATE去除標籤

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

您需要刪除所有在分割之前不需要的項目。 SO ......根據你的榜樣

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

nope。仍然是相同的結果..:/ – noidea

+0

我要使用其他答案。不過謝謝! :) – noidea