c# - 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 文件:
- test1.txt
- test2.txt
- test3.txt
我的列表框将显示:
- C:\Client\TestFolder\test1.txt
- C:\Client\TestFolder\test2.txt
- C:\Client\TestFolder\test3.txt
期望的结果:
- 测试1
- 测试2
- 测试3
解决方案
您可以使用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]));
}
推荐阅读
- python - 需要一些帮助来创建有效的搜索功能
- python - 如何画出keras CNN架构?
- sql - 使用池连接 SQL 服务器数据库,查询错误,字段使用重音
- c# - MSBuild - 根据构建配置复制一个或另一个文件
- elasticsearch - 根据字段值匹配、顺序和有限时间范围生成 Elasticsearch 查询输出
- mongodb - Docker Mongo 实例的身份验证不正确
- rust - 没有为 Crate 结构实现调试
- ios - 如何动态改变 UICollectionView 的高度以适应内容大小
- javascript - 如何在 Puppeter 中传递变量和函数?
- javascript - 将 SWR 与 Redux 一起使用是正确的还是好的做法?