我有一个包含许多string
行的数组。
对于该数组中的每一行,如果满足条件,
我有一个控制台应用程序,显示数组中的行,并进行一些修改(我称之为outputLine
)。
如何从outputLines
?
class Program
{
static void Main(string[] args)
{
string[] linesArray = File.ReadAllLines(@"C:\Users\AK1\Desktop\CC2_B.TXT");
int linecount = File.ReadAllLines(@"C:\Users\AK1\Desktop\CC2_B.TXT").Length;
for (int i = 0; i < linecount; i++)
{
if (linesArray[i].Contains("2008/12"))
{
string[] outputArray = linesArray;
string outputLine = "yes " + outputArray[i];
Console.WriteLine(outputLine);
}
}
Console.ReadLine();
}
}
答案 0 :(得分:1)
而不是array
,它必须在C#声明时定义其大小,而不是寻找List<string>
。您可能需要参考this answer向array
添加元素,以便更好地理解List
和array
在文件顶部添加using System.Collections.Generic
并修改代码:
class Program
{
static void Main(string[] args)
{
string[] linesArray = File.ReadAllLines(@"C:\Users\AK1\Desktop\CC2_B.TXT");
int linecount = File.ReadAllLines(@"C:\Users\AK1\Desktop\CC2_B.TXT").Length;
List<string> outputLines = new List<string>();
for (int i = 0; i < linecount; i++)
{
if (linesArray[i].Contains("2008/12"))
{
string outputLine = "yes " + linesArray[i];
outputLines.Add(outputLine);
Console.WriteLine(outputLine);
}
}
Console.ReadLine();
}
}
然后,如果你真的需要它成为一个数组(比如把它传递给另一个函数),你可以调用outputLines.ToArray()
答案 1 :(得分:1)
为什么不首先使用linq过滤所需条件的行?然后你可以在控制台输出。
string[] lines = File.ReadAllLines(@"C:\Users\AK1\Desktop\CC2_B.TXT");
string[] filteredLines = lines.Where(line => line.Contains("2008/12")).ToArray();
foreach(string line in filteredLines){
Console.WriteLine("yes " + line);
}
答案 2 :(得分:0)
声明一个容量为linecount的数组,以防您需要添加每一行。 我想这是c ++?所以你不能在运行时增加数组大小。
static void Main(string[] args)
{
int outputCounter=0;
.......
if (linesArray[i].Contains("2008/12"))
{
string outputLine = "yes " + outputArray[i];
outputArray[outputCounter]= outputLine;
outputCounter++;
Console.WriteLine(outputLine);
}
}
更新: 对于c#,只需做这样的事情
static void Main(string[] args)
{
List<string> outputList = new List<string>();
.......
if (linesArray[i].Contains("2008/12"))
{
string outputLine = "yes " + outputArray[i];
outputList.Add(outputLine);
Console.WriteLine(outputLine);
}
}
答案 3 :(得分:0)
如果您想要动态添加,请尝试使用列表而不是数组。例如;
class Program
{
static void Main(string[] args)
{
string[] linesArray = File.ReadAllLines(@"C:\Users\AK1\Desktop\CC2_B.TXT");
int linecount = File.ReadAllLines(@"C:\Users\AK1\Desktop\CC2_B.TXT").Length;
// Delcare your list here
List<string> outputList = new List<string>();
for (int i = 0; i < linecount; i++)
{
if (linesArray[i].Contains("2008/12"))
{
// You can "Add" to lists easily like this
outputList.Add(linesArray[i]);
// This will return you the last item in the list
string outputLine = "yes " + outputList.Last();
Console.WriteLine(outputLine);
}
}
// Then if you specifically want it back to an Array
string[] outputArray = outputList.ToArray();
Console.ReadLine();
}
}
希望这会有所帮助:)