猿问

C# 为字符串数组的每个项目设置特定的开始和结束位置

我试图读取特定文件夹中所有文件的名称,然后将每个文件名作为一个项目添加到列表框中。问题是这样做时我的列表框显示了完整的文件路径。


我尝试了几种不同的方法,感觉好像从每个项目中删除“C:\Client\TestFolder\”和“.txt”应该非常容易。但是似乎没有任何效果:(非常感谢任何帮助!


        string[] filePaths = Directory.GetFiles(@"C:\Client\TestFolder\", "*.txt", SearchOption.TopDirectoryOnly);

        listBox1.Items.AddRange(filePaths);

        string[] titleArray = new string[listBox1.Items.Count];


        for (int i = 0; i < listBox1.Items.Count; i++)

        {

            titleArray[i] = listBox1.Items[i].ToString();

        }


        Array.Sort(titleArray);

        listBox1.Items.Clear();


        for (int i = 0; i < titleArray.Length; i++)

        {

            listBox1.Items.Add(titleArray[i].ToString());

        }

例如,如果文件路径 C:\Client\TestFolder\ 包含 3 个 .txt 文件:

  1. 测试1.txt

  2. 测试2.txt

  3. 测试3.txt

我的列表框将显示:

  1. C:\Client\TestFolder\test1.txt

  2. C:\Client\TestFolder\test2.txt

  3. C:\Client\TestFolder\test3.txt

期望的结果:

  1. 测试 1

  2. 测试2

  3. 测试3



白猪掌柜的
浏览 144回答 1
1回答

哆啦的时光机

您可以使用Path.GetFileNameWithoutExtension。使用您的代码的示例:string[] filePaths = Directory.GetFiles(@"C:\Client\TestFolder\", "*.txt", SearchOption.TopDirectoryOnly);listBox1.Items.AddRange(filePaths);string[] titleArray = new string[listBox1.Items.Count];for (int i = 0; i < listBox1.Items.Count; i++){    titleArray[i] = listBox1.Items[i].ToString();}Array.Sort(titleArray);listBox1.Items.Clear();for (int i = 0; i < titleArray.Length; i++){    listBox1.Items.Add(Path.GetFileNameWithoutExtension(titleArray[i]));}
随时随地看视频慕课网APP
我要回答