String.Substring如何比String.Split更有效?

时间:2013-07-31 02:28:28

标签: c# .net

Joe Duffy's Blog暗示使用string.Substringstring.Split更有效。

我不知道它是否说Substring方法没有分配新字符串,或者它是否更有效,因为它没有进行任何不需要的分配。你能否解释一下如何提高效率并展示一个例子。

我理解他的第一个例子是创建一个数组,然后处理数组中的每个字符串。

string str = ...;
string[] substrs = str.Split(',');
foreach (string subtr in substrs) {
Process(substr);
}

以下效率如何

string str = ...;
int lastIndex = 0;
int commaIndex;
while ((commaIndex = str.IndexOf(',', commaIndex)) != -1) {
    Process(substr, lastIndex, commaIndex);
    lastIndex = commaIndex + 1;

我看到的是使用String.IndexOf查找逗号的索引然后处理字符串。我假设他打算在处理过程中使用String.Substring来提取数据。下面的评论之一表明他可能会逐字逐句地提出它。他是否会拉字符,直到他点击下一个逗号可能会构建一个char数组?

1 个答案:

答案 0 :(得分:7)

好悲伤。

老笑话:经理想知道程序员A或程序员B是否是更好的程序员,所以他上演了一场比赛。他们都写了一个程序来解决一个复杂的问题,编写最好的程序的人会赢。

两位程序员提交了他们的答案。程序员A的程序跑得最快,当程序员B指出程序员A程序提供的答案有点偏离时,经理即将宣布他是胜利者。

“但我的计划仍然是最快的,我应该获胜”,程序员A说。

“如果答案不一定正确,我可以编写一个比你的程序快10倍的程序”,反驳程序员B。

Joe Duffy的第二个例子,他避免使用string.Split(),这是错误的。它不会编译。变量“substr”未定义。

我休息一下。