2009-09-09 11 views
13

最適なアプローチ、単純な文字列連結、またはstring.formatは何ですか?例えば文字列連結VS文字列形式

、使用することをお勧めです:

s:=v1+' '+v2 

または

s:=format('%S %S',[v1,v2]) 

答えて

11

は、 "最良の" のためのあなたの条件に依存します。 2つの文字列を連結している場合は、+演算子を使用します。あなたが何をしようとしているのか、読みやすいのかは明らかです。バリエーションを使用する必要がないため、少し速くなります。 (あなたが実際にボンネットの下に何をするかformatを見たことがありますか?それはちょっと怖いです!)

formatの主な利点は、このようなテキストファイルやのように、それはあなたが単一の文字列を作成し、どこかに保存することができますということですresourcestringを呼び出し、後で他のパラメータを収集します。これにより、より複雑なタスクに役立ちます。しかし、あなたがする必要があるのは、2つの弦を一緒に繋ぐことだけであれば、ちょっと残酷なIMOです。

+6

通常、「最高」というのは、「今から3ヶ月後にこのようにコードを書いた理由を理解できますか?」ということです。 –

5

ここで第三の選択肢があります:

s:=Concat(V1,V2); 
+6

これはs:= V1 + V2と同じです。 Concatは、同じ内部ヘルパーを + として呼び出すために折りたたまれているコンパイラの "マジック"関数です。 –

+2

舞台裏では同じですが、特に長い文字列や複数の連結では、 "+"演算子よりもコードを読みやすくなっています。これは、メーソンの実践的な「最良の」ポイントに戻ります。 – Argalatyr

10

フォーマットは国際化対応であり、アプリケーションをローカライズすることができます。連結はしません。したがって、私は、文化に依存した方法で生産する必要のあるディスプレイのフォーマットを好む。

更新:国際化の理由は、すべての言語がすべて同じ順序で表現されているわけではありません。不自然な例は次のようになります。

resourcestring 
    sentence = ' is '; 

var 
    subject = 'Craig'; 
    adjective = 'helpful'; 
begin 
    WriteLn(subject + sentence + adjective + '!'); 

これは動作しますが、私はresourcestringにカスタマイズすることができますが、スペイン語で私が書くと、「¡QUEのservicial ESクレイグ!」 resourcestringは私を助けません。代わりに私が書く必要があります。

resourcestring 
    sentence = '%S is %S!'; // ES: '¡Qué %1:S es %0:S!' 
+1

あなたはそのステートメントを説明したいと思うかもしれませんが、Formatがi18nで動作する理由は、多くのDelphiユーザーにとっては明らかではないでしょう。 –

+1

これはどうですか? –

+0

私が望んだもの:-) –

0

を私が使用します。

s := v1 + ' ' + v2; 

それは明確なと理解するのが最も簡単です。

これが最も重要なことです。

少し効率的な構造が見つかるかもしれません。 Delphi 2009でTStringBuilderを使用します。効率が最も重要な場合は、2つまたは3つの最も重要なラインで必要なことを行います。他の場所では、わかりやすく分かりやすいコードと構文を使用してください。