【问题标题】:Split method with line breaker vb.net使用线路断路器 vb.net 的拆分方法
【发布时间】:2016-04-05 09:40:25
【问题描述】:

我有一个选中的列表框来填充文本框的值,但是如果我将文本框中的文本粘贴到一个带有换行符的 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 中,它们会像这样:

【问题讨论】:

  • 所以你想从 TextBox 中取出每个项目,它应该出现在 ChecedListBox 中,对吗?您希望如何划分 TextBox 中的项目?按线?还是每个单词分开?
  • 每个单词分开!

标签: vb.net checkedlistbox


【解决方案1】:

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

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

【讨论】:

  • 您可能还需要检查 Split 返回的空字符串。我会更新
  • @StuartWhitehouse - 更清洁的选项然后我的建议......忘了你可以直接使用 vbTab。
  • 不错!谢谢你们!
【解决方案2】:

去掉所有空格,然后拆分

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)

【讨论】:

  • 我将使用另一个答案。不过还是谢谢! :)
猜你喜欢
  • 2014-08-01
  • 1970-01-01
  • 2015-06-30
  • 2018-08-31
  • 1970-01-01
  • 1970-01-01
  • 2012-11-06
  • 2019-08-23
  • 1970-01-01
相关资源
最近更新 更多