Эффективность string.format с условным интервалом - PullRequest
2 голосов
/ 16 августа 2011

Какой самый быстрый способ отформатировать полное имя?где middlename и суффикс могут быть нулевыми или пустыми?

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

Есть ли лучший вариант? Самый быстрый это важная вещь.

Ответы [ 2 ]

4 голосов
/ 16 августа 2011

Я бы так и сделал:

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

Возможно, это не самое быстрое решение, но оно довольно ясно дает понять, что происходит.

1 голос
/ 16 августа 2011

Сначала проверьте наличие нуля или пустости, а затем напишите специальный код для каждого из них.Я ожидаю, что непосредственная работа с буфером char[] будет быстрее, чем string.Format или StringBuilder.

Но я нахожу странным, что форматирование имен является узким местом производительности в вашем приложении.Даже форматирование нескольких миллионов имен не займет много времени.

...