Reputation: 11
I have 1 array with many string
lines.
For every line in that array, if a condition is met,
I have a console app that displays the line from the array, with some modifications (I call this the outputLine
).
How do I make an array from the list of 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();
}
}
Upvotes: 1
Views: 148
Reputation: 1306
Try working with Lists instead of arrays if you're wanting to make dynamic additions. For example;
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();
}
}
Hope this helps :)
Upvotes: 0
Reputation: 892
why not first filter your lines with desired condition by using linq? then you can output in console.
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);
}
Upvotes: 1
Reputation: 2221
Rather than an array
, which has to define its size at declaration in C#, you're looking for a List<string>
. You might want to refer to this answer about adding elements to an array
to better understand the difference between List
and array
Add using System.Collections.Generic
at the top of your file and modify your code as such:
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();
}
}
Then if you really need it to be an array (like to pass it to another function), you can call outputLines.ToArray()
Upvotes: 1
Reputation: 2861
Declare an array with a capacity of linecount, in case you need to add every single line. I suppose this is c++? so you can not increase an array size in runtime.
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);
}
}
Update: For c# just do something like this
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);
}
}
Upvotes: 0