6
    String []lines = System.IO.File.ReadAllLines(path);
    foreach (String line in lines)
    {
        line.Trim();
    }

明らかに、これは機能しません。これString.Trimは、トリミングされたバージョンを新しい文字列として返すためです。そして、あなたはすることはできませんline = line.Trim()。それで、これを昔ながらのforループにする唯一の方法はありますか?

    for(int i=0;i<lines.Length;++i)
    {
        lines[i] = lines[i].Trim();
    }

Visual Studio 2005、つまり.Net2.0に制限されていることに注意してください

4

4 に答える 4

8
lines.Select(l => l.Trim()).ToArray();

または、.NET 2.0 の場合:

static IEnumerable<string> GetTrimmed(IEnumerable<string> array)
{
    foreach (var s in array)
        yield return s.Trim();
}

使用方法:

lines = new List<string>(GetTrimmed(lines)).ToArray();
于 2012-12-21T13:25:08.637 に答える
1

「それで、これを古い学校のforループにする唯一の方法はありますか?」はい、.NET2にはLinqのものはありません。しかし、正直なところ、「昔ながらのforループ」は、最も効率的で、最も読みやすく、最短のアプローチでもあります。だから問題は何ですか?

for(int i = 0; i < lines.Length; i++)
    lines[i] = lines[i].Trim();
于 2012-12-21T13:35:56.353 に答える
1

thisによるとList<string>、.NET 2.0 に含まれています。

で試してみてくださいList<string>

String []lines = System.IO.File.ReadAllLines(path);

List<string> yourLinesTrimed = new List<string>;
foreach (String line in lines)
{
        yourLinesTrimed.Add(line.Trim());
}

List<string>次に、 を使用して を配列に変換できますToArray()

これを行うメソッドを構築しましょう。

 public String[] TrimAnArray(String[] lines)
 {
     List<string> yourLinesTrimed = new List<string>;
     foreach (String line in lines)
     {
         yourLinesTrimed.Add(line.Trim());
     }
     return yourLinesTrimed.ToArray();
 }
于 2012-12-21T13:27:44.847 に答える
0

LINQ を使用することもできます。

String []lines = System.IO.File.ReadAllLines(path)
                .Select(line => line.Trim())
                .ToArray();

編集:

.NET 2.0 に制限されている場合は、2 番目のコード サンプルで行ったように、for ループを使用します。それを行うためのより良い方法はないと思います.forループは十分に効率的です。もちろん、LINQ を .NET 2.0 で動作させるための回避策はいくつかありますが、面倒なことをする価値はないと思います。

于 2012-12-21T13:25:50.683 に答える