Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 字符串连接与字符串格式_Delphi - Fatal编程技术网

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;