Delphi 字符串连接与字符串格式
最好的方法是什么,简单字符串连接还是Delphi 字符串连接与字符串格式,delphi,Delphi,最好的方法是什么,简单字符串连接还是string.format 例如,最好使用什么: s:=v1+' '+v2 或 这里有第三种选择: s:=Concat(V1,V2); 取决于您的“最佳”标准。如果您所做的只是连接两个字符串,我将使用+运算符。很明显,你想做什么,很容易阅读,而且速度快了一点,因为它不需要使用变体。(你有没有看过format在引擎盖下到底做了什么?有点吓人!) 格式的主要优点是,它允许您生成单个字符串并将其存储在某个位置,例如文本文件或资源字符串,然后收集其他参数。这使
string.format
例如,最好使用什么:
s:=v1+' '+v2
或
这里有第三种选择:
s:=Concat(V1,V2);
取决于您的“最佳”标准。如果您所做的只是连接两个字符串,我将使用+运算符。很明显,你想做什么,很容易阅读,而且速度快了一点,因为它不需要使用变体。(你有没有看过
format
在引擎盖下到底做了什么?有点吓人!)
格式
的主要优点是,它允许您生成单个字符串并将其存储在某个位置,例如文本文件或资源字符串,然后收集其他参数。这使得它对于更复杂的任务非常有用。但是,如果你只需要把两个字符串粘在一起,那在我看来就有点过分了。格式与国际化一起工作,使你的应用程序本地化成为可能。串联不起作用。因此,我倾向于任何可能必须以文化相关方式制作的显示格式
更新:格式国际化的原因是并非所有语言都以相同的顺序表达所有内容。一个人为的例子是:
resourcestring
sentence = ' is ';
var
subject = 'Craig';
adjective = 'helpful';
begin
WriteLn(subject + sentence + adjective + '!');
这是可行的,我可以使用resourcestring进行自定义,但在西班牙语中,我会写“Quéservical es Craig!”resourcestring对我没有帮助。相反,我应该写:
resourcestring
sentence = '%S is %S!'; // ES: '¡Qué %1:S es %0:S!'
我使用:
这是最清楚、最容易理解的
这是最重要的
您可能会发现一个稍微更高效的构造,例如在Delphi 2009中使用TStringBuilder。如果效率是最重要的,那么在两到三条最关键的路线上做必要的事情。在其他地方,使用清晰易懂的代码和结构。通常“最佳”最终归结为“我是否理解三个月后我为什么以这种方式编写代码?”。您可能想解释一下这句话,对于许多Delphi用户来说,格式为什么与i18n一起工作可能并不明显。这与s:=V1+V2相同;Concat是一个编译器“魔术”函数,它被折叠以调用与++相同的内部助手。虽然它在幕后是相同的,但我发现它在代码中比“+”运算符更容易阅读,尤其是对于长字符串或多个串联。这可以追溯到梅森的实践观点,即什么是“最好的”。
resourcestring
sentence = '%S is %S!'; // ES: '¡Qué %1:S es %0:S!'
s := v1 + ' ' + v2;