0

我有一个文件夹(“EDI”)[editions],里面有 .txt 文件(01,02,03,04)我有这个功能代码:

ListBox2.Items.AddRange(File.ReadAllLines(Application.StartupPath & "\Cat\EDI\", "01.txt"))
ListBox2.Items.AddRange(File.ReadAllLines(Application.StartupPath & "\Cat\EDI\", "02.txt"))
ListBox2.Items.AddRange(File.ReadAllLines(Application.StartupPath & "\Cat\EDI\", "03.txt"))

直到68。每个文件都包含一个列表歌曲。但是,如果我尝试减少在“For Loop”处实现的代码,如:

For i = 1 To 70
           ListBox2.Items.AddRange(File.ReadAllLines(Application.StartupPath & "\Cat\EDI\", (i) & ".txt"))
Next

我在(i) & ".txt". 说:我该"String cannot be converted in coding" 如何解决?需要注意的是文本文件的名称是 01.txt,02.txt WITH 2 NUMBERS,“for-loop”也会自动将 01 更改为 1

或更好...如何加载文件夹中所有现有文本文件的所有文本行?

如果需要,我已经有了文件列表,我使用此代码将所有 txt 文件名放入另一个 ListBox:

Dim newroot As String
newroot = (Application.StartupPath & "\Cat\EDI\")
listbox1.items.AddRange(IO.Directory.GetFiles(newroot, "*.txt").
               Select(Function(f) IO.Path.GetFileNameWithoutExtension(f)))
4

2 回答 2

0

以下使用由字符串前面的 $ 表示的插值字符串。这将在 { } 中的整数上为您调用 .ToString

Private Sub FileNamesInLoop()
        For i As Integer = 1 To 9
            ListBox1.Items.Add($"0{i}.txt")
        Next
        For i2 As Integer = 10 To 68
            ListBox1.Items.Add($"{i2}.txt")
        Next
End Sub
于 2018-02-18T05:46:44.150 回答
0

您可以使用Integer.ToString(format)重载并指定数字格式00。这样做将始终为小于 10 的数字添加前导零,即:

  • 5.ToString("00")变成05
  • 9.ToString("00")变成09
  • 23.ToString("00")变成23

以下是你的做法:

For i = 1 To 68
    ListBox2.Items.AddRange(File.ReadAllLines(Application.StartupPath & "\Cat\EDI\", i.ToString("00") & ".txt"))
Next

尽管我强烈建议您切换到Path.Combine()而不是自己连接路径,因为它将确保一切正常:

For i = 1 To 68
    ListBox2.Items.AddRange(File.ReadAllLines(Path.Combine(Application.StartupPath, "Cat", "EDI", i.ToString("00") & ".txt")))
Next
于 2018-02-18T09:34:14.763 回答