C# 读取文本文件并将其拆分

C# 读取文本文件并将其拆分,c#,C#,所以,我知道我的标题有点混乱,我会解释 我的代码如下所示: string filename = "C:\\C#\\maplist.txt"; // please put the text file path. string filename2 = "C:\\C#\\zemaplist.txt"; string map; StreamReader sr = new StreamReader(filename); StreamWriter sw = new StreamWriter(filename

所以,我知道我的标题有点混乱,我会解释

我的代码如下所示:

string filename = "C:\\C#\\maplist.txt"; // please put the text file path.
string filename2 = "C:\\C#\\zemaplist.txt";
string map;
StreamReader sr = new StreamReader(filename);
StreamWriter sw = new StreamWriter(filename2);
List<string> maps = new List<string> { };
while ((map = sr.ReadLine()) != null)
{
    maps.Add(map);
}
sr.Close();
for (int i = 0; i < maps.Count; i++)
{
    Console.WriteLine(maps[i]);
    sw.WriteLine(maps[i]);
}
sw.Close();
string filename=“C:\\C\请输入文本文件路径。
string filename2=“C:\\C\zemaplist.txt”;
字符串映射;
StreamReader sr=新的StreamReader(文件名);
StreamWriter sw=新的StreamWriter(文件名2);
列表映射=新列表{};
而((map=sr.ReadLine())!=null)
{
地图。添加(地图);
}
高级关闭();
对于(int i=0;i
我需要做的是当代码读到新行时,在我的行中有

“嘿,嘿”

我想将
彼此分开,这样我就可以将它们作为其他参数,这样第一个
Hey
将被添加到
maps
,另一个
Hey
将是
maps2

如何执行此操作?

您可以使用
Split()
函数根据分隔符分割给定字符串

试试这个:

while ((map = sr.ReadLine()) != null)
{
    maps.Add(map.Split(',')[0].Trim()); 
    maps2.Add(map.Split(',')[1].Trim());
}
简单代码:

using System.IO;

string filename = "C:\\C#\\maplist.txt"; // please put the text file path.
string filename2 = "C:\\C#\\zemaplist.txt";
string map;

StreamWriter sw = new StreamWriter(filename2);
List<string> maps = new List<string> { };
List<string> maps2 = new List<string> { };
String [] allLines =  File.ReadAllLines(filename);
foreach(String line in allLines)
{
   maps.Add(line.Split(',')[0].Trim());
   maps2.Add(line.Split(',')[1].Trim());
}


for (int i = 0; i < maps.Count; i++)
{
    Console.WriteLine(maps[i]);
    sw.WriteLine(maps[i]);
}
sw.Close();
String mapItem1="";
String mapItem2="";
if(maps.Count == maps2.Count)
{
   for(int i=0;i<maps.Count;i++)
   {
      mapItem1=maps[i];
      mapItem2=maps2[i];
   }
}
使用System.IO;
string filename=“C:\\C#\\maplist.txt”;//请输入文本文件路径。
string filename2=“C:\\C\zemaplist.txt”;
字符串映射;
StreamWriter sw=新的StreamWriter(文件名2);
列表映射=新列表{};
列表映射2=新列表{};
String[]allLines=File.ReadAllLines(文件名);
foreach(所有行中的字符串行)
{
maps.Add(line.Split(',)[0].Trim());
Add(line.Split(',')[1].Trim());
}
对于(int i=0;i
解决方案2:

using System.IO;

string filename = "C:\\C#\\maplist.txt"; // please put the text file path.
string filename2 = "C:\\C#\\zemaplist.txt";
string map;

StreamWriter sw = new StreamWriter(filename2);
List<string> maps = new List<string> { };
List<string> maps2 = new List<string> { };
String [] allLines =  File.ReadAllLines(filename);
foreach(String line in allLines)
{
   maps.Add(line.Split(',')[0].Trim());
   maps2.Add(line.Split(',')[1].Trim());
}


for (int i = 0; i < maps.Count; i++)
{
    Console.WriteLine(maps[i]);
    sw.WriteLine(maps[i]);
}
sw.Close();
String mapItem1="";
String mapItem2="";
if(maps.Count == maps2.Count)
{
   for(int i=0;i<maps.Count;i++)
   {
      mapItem1=maps[i];
      mapItem2=maps2[i];
   }
}
字符串mapItem1=”“;
字符串mapItem2=“”;
if(maps.Count==maps2.Count)
{
对于(int i=0;i您可以使用
Split()
函数根据分隔符分割给定字符串

试试这个:

while ((map = sr.ReadLine()) != null)
{
    maps.Add(map.Split(',')[0].Trim()); 
    maps2.Add(map.Split(',')[1].Trim());
}
简单代码:

using System.IO;

string filename = "C:\\C#\\maplist.txt"; // please put the text file path.
string filename2 = "C:\\C#\\zemaplist.txt";
string map;

StreamWriter sw = new StreamWriter(filename2);
List<string> maps = new List<string> { };
List<string> maps2 = new List<string> { };
String [] allLines =  File.ReadAllLines(filename);
foreach(String line in allLines)
{
   maps.Add(line.Split(',')[0].Trim());
   maps2.Add(line.Split(',')[1].Trim());
}


for (int i = 0; i < maps.Count; i++)
{
    Console.WriteLine(maps[i]);
    sw.WriteLine(maps[i]);
}
sw.Close();
String mapItem1="";
String mapItem2="";
if(maps.Count == maps2.Count)
{
   for(int i=0;i<maps.Count;i++)
   {
      mapItem1=maps[i];
      mapItem2=maps2[i];
   }
}
使用System.IO;
string filename=“C:\\C#\\maplist.txt”//请输入文本文件路径。
string filename2=“C:\\C\zemaplist.txt”;
字符串映射;
StreamWriter sw=新的StreamWriter(文件名2);
列表映射=新列表{};
列表映射2=新列表{};
String[]allLines=File.ReadAllLines(文件名);
foreach(所有行中的字符串行)
{
maps.Add(line.Split(',)[0].Trim());
Add(line.Split(',')[1].Trim());
}
对于(int i=0;i
解决方案2:

using System.IO;

string filename = "C:\\C#\\maplist.txt"; // please put the text file path.
string filename2 = "C:\\C#\\zemaplist.txt";
string map;

StreamWriter sw = new StreamWriter(filename2);
List<string> maps = new List<string> { };
List<string> maps2 = new List<string> { };
String [] allLines =  File.ReadAllLines(filename);
foreach(String line in allLines)
{
   maps.Add(line.Split(',')[0].Trim());
   maps2.Add(line.Split(',')[1].Trim());
}


for (int i = 0; i < maps.Count; i++)
{
    Console.WriteLine(maps[i]);
    sw.WriteLine(maps[i]);
}
sw.Close();
String mapItem1="";
String mapItem2="";
if(maps.Count == maps2.Count)
{
   for(int i=0;i<maps.Count;i++)
   {
      mapItem1=maps[i];
      mapItem2=maps2[i];
   }
}
字符串mapItem1=”“;
字符串mapItem2=“”;
if(maps.Count==maps2.Count)
{
对于(int i=0;i
Split
方法应该可以帮助您解决这个问题

如果要修剪前导空白字符,可以对字符串使用.trim()方法

Split
方法应该可以帮助您解决这个问题


如果要修剪前导空白字符,可以对字符串使用.trim()方法。

为什么还要逐行读取呢?读取整个文件,替换“,”的新行字符(以防止不同行的最后一个和第一个元素被视为一个),然后循环遍历干净的字符串

string fileContent = Regex.Replace(File.ReadAllText("test.txt"), @"\r", ",");
List<string> mapList = new List<string>();

foreach (string map in Regex.Split(fileContent.Replace(@"\s+", ""), ","))
{
    mapList.Add(map.Trim());
}            
string fileContent=Regex.Replace(File.ReadAllText(“test.txt”),@“\r”,“,”);
列表映射列表=新列表();
foreach(Regex.Split(fileContent.Replace(@“\s+”,“”),“,”)中的字符串映射)
{
Add(map.Trim());
}            

为什么还要逐行读取呢?读取整个文件,替换“,”的新行字符(以防止不同行的最后一个和第一个元素被视为一个),并循环一个干净的字符串

string fileContent = Regex.Replace(File.ReadAllText("test.txt"), @"\r", ",");
List<string> mapList = new List<string>();

foreach (string map in Regex.Split(fileContent.Replace(@"\s+", ""), ","))
{
    mapList.Add(map.Trim());
}            
string fileContent=Regex.Replace(File.ReadAllText(“test.txt”),@“\r”,“,”);
列表映射列表=新列表();
foreach(Regex.Split(fileContent.Replace(@“\s+”,“”),“,”)中的字符串映射)
{
Add(map.Trim());
}            
使用
Split()

那么你有:

splitArray[0] = "Hey";
splitArray[1] = "Hey";
使用
Split()

那么你有:

splitArray[0] = "Hey";
splitArray[1] = "Hey";


您可以使用'File.ReadAllLines()'而不是
StreamReader
您可以使用'File.ReadAllLines()'是这样简单还是只是在使用一个示例?是否要拆分文件中出现的每个“X,X”?您可以使用'File.ReadAllLines()'而不是
StreamReader
您可以使用'File.ReadAllLines()'是这样简单还是只是在使用一个示例?是否要拆分出现的每个“X,X”文件中的“X,X”?不,“嘿,你很好”在代码中失败,假设OP想要拆分用逗号分隔的类似单词。你说“它失败”是什么意思?你能告诉我更多吗?OP在他的问题中使用了“嘿,嘿”“。这很可能意味着我们需要用逗号分隔相同的单词。你的代码不能这样做。我只有两个单词,第一个是电子邮件,第二个是姓名。如果用逗号分隔,它会工作吗?如果它用逗号分隔,它会工作。因为你的“嘿,嘿”示例是用逗号分隔的,我发布的代码应该可以拆分它。不。“嘿,你很好”假设OP想要拆分用逗号分隔的相似单词,代码失败。你说“它失败”是什么意思?你能告诉我更多吗?OP在他的问题中使用了“嘿,嘿”。这很可能意味着我们需要用逗号分隔相同的单词。你的代码不能这样做。我只有两个单词,第一个单词是email,第二个是name。如果用逗号分隔,它会工作吗?因为你的“嘿,嘿”示例如果是逗号分隔的,我发布的代码应该可以拆分。请阅读我的其他评论。@danish:谢谢,你的意思是OP想要拆分类似的单词?不,我不是这么说。我是说这个问题不够清楚。我想这个问题行得通,但我有一个问题,我能为您做些什么(int i=0;我认为这不可行,需要第一次,第一行用第二行读我的其他评论。@丹麦语:谢谢,你的意思是OP想要拆分类似的单词?不,我不是这么说。我是说这个问题不够清楚。我想这个问题可行,但我有一个问题,我能为你做些什么(int i=0;i这不起作用,它需要第一次,并以这种读取方式为第一行指定第二行