2

Ruby のバックグラウンドから来て、.NET と C# は初めてです。C# でいくつかの小さなアプリケーションの開発に成功しましたが、まだまだ学ぶべきことがたくさんあります。ただし、私を困惑させていることの 1 つは、オブジェクトで複数のメソッドを呼び出す効率的な方法を見つけることです。文字列を使用した例を示します。

私は、Ruby で次のようなことができることに慣れています。

my_string = "The quick brown fox\tjumped over the lazy dog\t\n"
puts my_string.strip.split("\t")

ただし、C# で同じことを達成するには、これが今私が知っているすべてです。

var myString = "The quick brown fox\tjumped over the lazy dog\t\n";
var myStringTrim = myString.Trim();
var myStringSplit = myStringTrim.Split('\t');
foreach (var s in myStringSplit)
    {
        Console.WriteLine(s);
    }

では、C# でこれを達成するためのより効率的な方法はありますか?

この特定の例を見ると、このメソッドを使用して大きなテキスト ファイルなどを読み取り、解析し、処理すると、パフォーマンスがどうなるのだろうと考えさせられます。

4

3 に答える 3

7

あなたはmyString.Trim().Split('\t');C#で行うことができます

Trim()オブジェクトを返すためstring、それを行うことができます。これを呼び出すSplit()と、配列が返されます。

しかし、必ずしもより「効率的」であるとは限りません。変数に格納していない場合でも、暫定オブジェクトが作成されています。

于 2012-05-04T02:28:32.413 に答える
4

これはうまくいきます...

var myString = "The quick brown fox\tjumped over the lazy dog\t\n".Trim().Split('\t');

これらのメソッドは文字列オブジェクトのインスタンス メソッドであり、Ruby で期待どおりに機能します。

心に留めておくべきことの 1 つは、文字列が不変であるということです。つまり、これらのメソッドは文字列変数の元の値を変更しませんが、元の変更されたコピーを返します。

于 2012-05-04T02:29:31.273 に答える
2

これらのコマンドを次のように連鎖させることができます。

myString.Trim().Split('\t').ForEach(s => Console.WriteLine(s));
于 2012-05-04T02:29:08.330 に答える