读取文本文件并将其拆分

时间:2013-12-22 18:32:46

标签: 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(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();

我需要做的是当代码读取新行时,在我的行中有

  

“喂,喂”

我想将,彼此分开,以便我可以将它们作为其他参数,以便第一个Hey将添加到maps而另一个hey 1}}将是maps2

我该怎么做?

4 个答案:

答案 0 :(得分:2)

您可以使用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();

解决方案2:

String mapItem1="";
String mapItem2="";
if(maps.Count == maps2.Count)
{
   for(int i=0;i<maps.Count;i++)
   {
      mapItem1=maps[i];
      mapItem2=maps2[i];
   }
}

答案 1 :(得分:2)

while ((map = sr.ReadLine()) != null)
{
     string[] split = map.Split(','); 
     //First Hey would be split[0], second Hey would be split[1]


     maps.Add(split[0].Trim());
     maps2.Add(split[1].Trim());
}

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

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

答案 2 :(得分:1)

使用Split()

string heys = "Hey,Hey";
string[] splitArray = heys.Split(',');

然后你有:

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

答案 3 :(得分:-1)

为什么甚至不费力地逐行阅读?读取整个文件,将新行替换为“,”(以防止来自不同行的最后和第一个元素被视为一个),并循环一个干净的字符串。

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());
}