0

我的测试文件包含:

processes
deleting 
agreed

这是 C# 中的代码

PorterStemmer testing = new PorterStemmer();
string temp,stemmed;
string[] lines = System.IO.File.ReadAllLines(@"C:\\Users\\PJM\\Documents\\project\\testerfile.txt");
System.Console.WriteLine("Contents of testerfile.txt = ");
for (int i = 0; i <2; i++)
   {
      temp = lines[i];
      stemmed = testing.StemWord(temp);
System.IO.File.WriteAllText(@"C:\\Users\\PJM\\Documents\\project\\testerfile3.txt", stemmed);
       Console.WriteLine("\t" + stemmed);
   }

运行代码后,testerfile3 只包含 "agre" 。所以我的问题是我希望单独处理字符串数组中的每个单词,即我在访问字符串数组时遇到问题。有没有办法访问字符串数组中的每个索引?

4

1 回答 1

2

WriteAllText的文档中:

如果目标文件已存在,则将其覆盖。

所以你的 for 循环中的每次迭代都会覆盖文件,你只剩下最后一次迭代的文本。

你可以System.IO.File.AppendAllText改用

此外,您可以使用数组的 Length 属性循环遍历所有单词for (int i = 0; i < lines.Length; i++)

Alternatively, instead of the for-loop you can use LINQ's Select to project the non-stemmed line to the stemmed one and use AppendAllLines to write the results:

System.IO.File.AppendAllLines(@"C:\\Users\\PJM\\Documents\\project\\testerfile3.txt", lines.Select(l => testing.StemWord(l)));
于 2016-10-01T15:23:11.483 回答