在C#中的string []数组中插入字符串

时间:2015-04-13 14:15:02

标签: c# arrays string

我有一个string []数组的问题。我不知道如何在string []中插入字符串。我无法为其分配任何数组。但我需要根据要求插入字符串。所以这有一个动态的长度。我是C#的新手,所以我不知道。所以请告诉我,如何设置?

我有一些不。一些动态文件夹中的文件,我想在string []数组中插入这些名称。所以我创建了从here读取文件sin目录的逻辑。现在我想逐个插入这些文件名。

5 个答案:

答案 0 :(得分:5)

无法动态添加数组。您需要创建一个新数组并将其复制到其中。

如果您需要动态添加到集合中,最好使用List代替数组。

答案 1 :(得分:1)

您无法向数组添加项目,因为数组具有固定长度,您也可以选择List<string>

要将列表转换为数组,您只需拨打list.ToArray().

即可

答案 2 :(得分:1)

这里有几个选项。首先澄清您正在使用的方法。 Directory.GetDirectories(string)返回一个字符串数组,其中包含传递给方法的路径中文件夹中包含的文件夹的路径。此数组不包含文件路径或文件名。您可以使用DirectoryInfo的实例,例如:

DirectoryInfo directory = new DirectoryInfo("my path to directory");

DirectoryInfo[] subDirectories = directory.GetDirectories();

这将返回您在DirectoryInfo构造函数中使用的路径中的目录中包含的子目录。

一般情况下阵列;您不能将数组添加到数组中,因为数组具有固定长度,但是静态数组类Array.Resize(ref yourArray, int newSize)中有一个方法可用于重新调整大小,然后将新值插入必要的索引(这样做)从后端创建一个新数组并为其指定前一个数组中指定的长度和值,但在这种情况下,您不需要在用户代码中跟踪多个数组变量,这有助于使其更容易记住在我看来)但如果你要定期这样做,你可能会更好地使用其他类型如List。

如果您想要文件名,例如myTextFile.txt而不是完整路径,您可以使用一点Linq,例如:

DirectoryInfo directory = new DirectoryInfo("my path to directory");

List<string> myFileNames = directory.GetFiles().Select(c => c.Name).ToList();

这将返回一个字符串List,即DirectoryInfo构造函数中使用的路径中目录中文件的名称。

通过更换目录.GetFiles()for directory.GetDirectories()然后附加Select()和ToList(),你可以通过获取目录名来做同样的事情。

答案 3 :(得分:0)

GetDirectories已经返回一个字符串数组。因此,你真的不需要知道数组的大小,你应该能够做到

string[] myVariable = dir.GetDirectories();

然后myVariable的长度与目录中子目录的长度相同。但请注意,由于数组是固定长度的,因此您无法向此数组添加更多内容。

答案 4 :(得分:0)

在一体化解决方案中,这可归纳如下 注意:如上所述,阵列具有固定长度,因此它们的长度不能动态包含

// Include IO, Linq namespace
using System.IO;
using System.Linq;

// To search files in a directory and collect in a collection
var directoryPath = "";
var fileNameList = Directory.GetFiles(directoryPath,"*.*", SearchOption.AllDirectories).ToList().Select(e=>Path.GetFileName(e));

// Casting the List to Array using ToArray()
var fileNameArray = fileNameList.ToArray();