2

格式化全名绝对最快的方法是什么?中间名和后缀可能为空或为空?

string fullname = string.Format("{0} {1} {2} {3}", 
                                FName, 
                                MI, 
                                LName, 
                                Suffix);

这样做的问题是,如果 MI 或后缀为空,那么我有两个空格。

我可以用这个进行第二次传递:

fullname = fullname.Replace("  ", " ");

或者我可以用这样的东西制作字符串:

string fullname = string.Format("{0}{1} {2}{3}", 
                        FName, 
                        string.IsNullOrEmpty(MI) ? "" : " " + MI, 
                        LName, 
                        string.IsNullOrEmpty(Suffix) ? "" : " " + Suffix);

有更好的选择吗? 最快最重要。

4

2 回答 2

4

我会这样做:

var parts = new[] { FName, MI, LName, Suffix };
string fullName = string.Join(" ", parts.Where(s => !string.IsNullOrWhiteSpace(s)));

这可能不是最快的解决方案,但它很清楚发生了什么。

于 2011-08-16T17:10:02.187 回答
1

首先检查 null 或空,然后为它们中的每一个编写专门的代码。我希望直接在char[]缓冲区上工作比string.FormatStringBuilder 更快。

但我觉得奇怪的是,格式化名称是应用程序的性能瓶颈。即使格式化几百万个名字也不应该花那么长时间。

于 2011-08-16T17:02:54.000 回答