Строковый конкатенация VS string format
Каков наилучший подход, простая конкатенация строк или string.format
?
Например, что лучше использовать:
s:=v1+' '+v2
или
s:=format('%S %S',[v1,v2])
Ответы
Ответ 1
Зависит от ваших критериев "наилучшего". Если все, что вы делаете, это конкатенация двух строк, я бы пошел с оператором+. Очевидно, что вы пытаетесь сделать и легко читаете, и это немного быстрее, потому что не нужно использовать варианты. (Вы посмотрели, что на самом деле делает format
под капотом? Это немного страшно!)
Основным преимуществом format
является то, что он позволяет вам создавать одну строку и хранить ее где-нибудь, например, в текстовом файле или ресурсе, а затем собирать другие параметры. Это делает его полезным для более сложных задач. Но если все, что вам нужно сделать, это придерживаться двух строк вместе, это своего рода overkill IMO.
Ответ 2
Формат работает с интернационализацией, что позволяет локализовать ваше приложение. Конкатенации нет. Следовательно, я предпочитаю формат для любого дисплея, который может быть создан в зависимости от культуры.
Обновление: формат причины работает для интернационализации, так это то, что не все языки выражают все в одном порядке. Надуманный пример:
resourcestring
sentence = ' is ';
var
subject = 'Craig';
adjective = 'helpful';
begin
WriteLn(subject + sentence + adjective + '!');
Это работает, и я могу настроить его с помощью ресурса, но на испанском языке я бы написал: "Квалифицировать Крейга!" Ресурс не помогает мне. Вместо этого я должен написать:
resourcestring
sentence = '%S is %S!'; // ES: '¡Qué %1:S es %0:S!'
Ответ 3
Здесь третий вариант:
s:=Concat(V1,V2);
Ответ 4
Я использую:
s := v1 + ' ' + v2;
Это яснее и проще понять.
Это самое важное.
Вы можете найти конструкцию, которая немного более эффективна, например. используя TStringBuilder в Delphi 2009. Если эффективность имеет первостепенное значение, сделайте то, что необходимо в двух или трех наиболее важных строках. Всюду, используйте код и конструкции, которые понятны и понятны.