vb.net - 我的文本文件行有时在 vb.net 中包含相同的字符串
问题描述
我有一个文本文件,它在不同的行中包含相同的字符串。我使用以下代码读取文件:
Dim readTexte() As String = File.ReadAllLines(OuvrirFichier, Encoding.UTF8)
Dim t As String
For Each t In readTexte
If t.Contains(TreeView1.SelectedNode.Text) Then
TextBox2.Text = Trim(t.Substring(0, 18))
TextBox1.Text = Trim(t.Substring(18, 90))
TextBox4.Text = Trim(t.Substring(107, 120))
End If
Next
但是,我有一个问题,因为在剪切和读取这些字符串时。代码无法选择正确的行来匹配 TreeView 节点,因为它标识了几个同样完美的字符串。
例如,第一行包含 3 个子字符串(固定宽度字段):
圣人、奥古斯丁和教会的医生。
第二行也包含三个子字符串,略有不同:
圣、莫妮卡和圣奥古斯丁的母亲
当我想阅读时,我的代码给了我两个奥古斯丁,并混合了奥古斯丁和莫妮克!TextBox2 包含树视图中包含的字符串。
我怎样才能解决这个问题?
树视图的创建尽可能简单,因此:
Dim readText () As String = File.ReadAllLines (OpenFile,
Encoding.UTF8)
Dim s As String
For Each s In readText
TextBox2.Text = Trim (s.Substring (0, 18))
TextBox1.Text = Trim (s.Substring (18, 90))
TextBox4.Text = Trim (s.Substring (107, 120))
Dim node As TreeNode = Me.TreeView1.Nodes (0)
TreeView1.Nodes (0) .Nodes.Add (New TreeNode (TextBox1.Text))
Next
解决方案
在回答这个问题之前,我们需要更多地了解 TreeView 是如何构建的。现在可能没有足够的与 TreeView 关联的数据,解决方案将位于完全不同的代码区域。
不过,我可以提供一些注释。首先,读取文件是计算机中可能做的最慢的事情之一。我们已经看到它足够小,可以放入内存中;如果它也相当稳定(不经常更改),您可以通过在程序启动时加载到数组来节省大量工作。
接下来,我不会只保留一个简单的字符串数组。相反,我会在加载时将数据解析为单独的字段。元组、类,甚至字符串数组都可以工作。
最后,即使找到匹配项,此代码也会继续循环。一旦我们找到我们要找的东西,我就有办法停下来。
像这样把它们放在一起:
'Create a set of Tuples. Could also use a class here.
Dim readTexte() As IEnumerable(Of (String, String, String)) =
File.ReadLines(OuvrirFichier, Encoding.UTF8).
Select(Function(line) (Trim(line.SubString(0, 18)), Trim(line.SubString(18,90)), Trim(line.SubString(107,120))) )
'Search the collection for the first match
Dim result = readTexte.First(Function(record) TreeView1.SelectedNode.Text.Equals(record.Item1))
TextBox2.Text = result.Item1
TextBox1.Text = result.Item2
TextBox4.Text = result.Item3
同样,这并不能解决您的匹配问题,因为该问题不包含我们需要帮助做到这一点的信息。请编辑问题以包含有关如何创建 TreeView 的更多详细信息。
推荐阅读
- python - 我无法在我的 aws ec2 上执行 Flask + Frontend
- java - jsp中的SimpleTagSupport与TagSupport
- mp3 - 如何查找和排序具有相同封面艺术的音乐?
- r - 您可以从包含顶点坐标的数据框在 R 中创建多个多边形吗?
- python - 在新标签页上打开链接
- python - 无论查询如何,xbbg 都会返回空 DataFrame
- nginx - 如何绕过 nginx 代理的 IPS 列表
- python - 在虚拟矩阵中查找簇
- pip - 如何从 mac 中的路径中删除 anaconda 以便进行 pip 安装?
- sql - 在 SQL Server 中迭代连接