C#如何为动态获取的文件名数组添加前缀生成新数组?
解决方案:生成带前缀的文件名数组并输出到README
问题分析
你当前代码里的newarr被初始化为仅含空字符串的固定长度数组,无法容纳多个元素。需要先匹配原数组长度,或用更灵活的集合类处理,再完成格式拼接与文件生成。
方案1:使用数组直接填充
先创建和原数组长度一致的新数组,通过循环逐个拼接格式字符串:
string[] dependencies = listbox1.Items.OfType<string>().ToArray(); // 初始化与原数组长度匹配的新数组 string[] newarr = new string[dependencies.Length]; for (int i = 0; i < dependencies.Length; i++) { // 按"AppN = 文件名"格式拼接,N从1开始计数 newarr[i] = $"App{i + 1} = {dependencies[i]}"; }
方案2:用LINQ简化代码(推荐)
利用LINQ的Select方法,同时获取元素和索引,一行完成数组转换:
string[] dependencies = listbox1.Items.OfType<string>().ToArray(); // 直接通过LINQ生成目标数组 string[] newarr = dependencies.Select((fileName, index) => $"App{index + 1} = {fileName}").ToArray();
生成README文件
完成数组转换后,使用File.WriteAllLines将内容写入README文件:
// 将数组内容写入当前目录下的README.txt,可自行修改路径 File.WriteAllLines("README.txt", newarr);
补充:从OpenFileDialog获取文件名的完整流程
如果还需要实现从OpenFileDialog选择文件的逻辑,补充如下代码:
OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Multiselect = true; // 允许一次性选择多个文件 if (openFileDialog.ShowDialog() == DialogResult.OK) { // 获取选中的所有文件名 string[] dependencies = openFileDialog.FileNames; // 生成带前缀的数组 string[] newarr = dependencies.Select((fileName, index) => $"App{index + 1} = {fileName}").ToArray(); // 写入README文件 File.WriteAllLines("README.txt", newarr); }
内容的提问来源于stack exchange,提问作者Ines B
相关产品推荐
相关产品推荐

