我是.NET和C#的新手,来自Ruby的背景。虽然我已经在C#中成功开发了几个小应用程序,但我还有很多需要学习的地方。但令我困惑的一件事是找到一种在对象上调用多个方法的有效方法。我将举一个使用字符串的例子。
我习惯于在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#中实现这一目标?
这个特殊的例子让我想知道如果我使用这个方法来读取,解析和处理大型文本文件或类似的东西会对性能产生什么影响。
答案 0 :(得分:7)
您可以在C#中执行myString.Trim().Split('\t');
您可以这样做,因为Trim()
会返回一个string
对象,您可以在其上调用Split()
,然后返回一个数组。
但它不一定更“有效”。正在创建临时对象,即使您没有将它们存储在变量中。
答案 1 :(得分:4)
这很好用......
var myString = "The quick brown fox\tjumped over the lazy dog\t\n".Trim().Split('\t');
这些方法是字符串对象的实例方法,并且可以像你期望的那样在Ruby中工作。
要记住的一件事是字符串是不可变的。也就是说,这些方法不会更改字符串变量的原始值,而是返回原始的修改后的副本。
答案 2 :(得分:2)
您可以将这些命令链接在一起:
myString.Trim().Split('\t').ForEach(s => Console.WriteLine(s));