字符串.使用条件间距的格式效率

本文关键字:格式 效率 条件 字符串 | 更新日期: 2023-09-27 18:06:01

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

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);

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

字符串.使用条件间距的格式效率

我会这样做:

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

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

首先检查null或empty,然后为它们分别编写专门的代码。我希望直接在char[]缓冲区上工作比string.Format或StringBuilder更快。

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