格式化全名的绝对最快方法是什么?中间名和后缀可能为null或为空?
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);
有更好的选择吗? 最快是重要的事情。
答案 0 :(得分:4)
我会这样做:
var parts = new[] { FName, MI, LName, Suffix };
string fullName = string.Join(" ", parts.Where(s => !string.IsNullOrWhiteSpace(s)));
这可能不是最快的解决方案,但它清楚地说明了发生了什么。
答案 1 :(得分:1)
首先检查null-or-empty,然后为每个代码编写专门的代码。我希望直接在char[]
缓冲区上工作的速度比string.Format
或StringBuilder快。
但我觉得奇怪的是,格式化名称是应用程序中的性能瓶颈。即使格式化几百万个名字也不应该花那么长时间。