配列を&を付けて、一列につなげるには?
sList.Add('一番目');
sList.Add('2番目');
sList.Add('参番目');
を、一番目&2番目&参番目にしたいのですが。
単に手動で、sString := '一番目&2番目&参番目';ではないです。
考えたのが、forループで、足していく。
そうすると、if文を使わないと、最初か最後に&がつきますよね?
最初か、最後の一文字を消せばいいんですが・・・。
もっと簡単な方法か、別の方法ってありますか?
PHPか、Perlでは配列を一発で連結する関数があった気がするんですが、Delphi6のヘルプ、コード支援機能で見ても、ないように感じるので。
知っていれば、簡単な事だと思うので、よろしくお願い致します。
半角空白や'&'などを含んだときに'"'で括ってよいのであれば、
sList.Delimiter := '&';
Memo1.Text := sList.DelimitedText;
でできます。
sList.Add('A B');
sList.Add('C&D');
sList.Add('E"F');
の場合、
"A B"&"C&D"&"E""F"
となります。
あくまでif文が面倒とかでなく処理的に遅くなるのが心配なら、
forループを今より-1して最後の処理だけループから外すのが最も早いです、
それ以前に、文字列をstr:=str1+str2で処理していったら当然こちらの方がネックになりますがね。
にしのさんの方法に似ていますが、半角空白や&があっても
そのまま連結されます。(むしろ&は処理しないとまずいと思いますが)
改行文字を&に変換するだけですが、やはり最後に余計に1つ&が
付いてしまうので削除しています。
うーん、Delete(s, Length(s), 1)を使った方が分かりやすいかな?
あ、でもDeleteはfunctionじゃないなぁ。
s: string;
s := StringReplace(sList.Text, sList.LineBreak, '&', [rfReplaceAll]);
Memo1.Text := Copy(s, 1, Length(s)-1);
sListがこの場のみの使い捨てであれば
sList.LineBreak := '&';
s := sList.Text;
Memo1.Text := Copy(s, 1, Length(s)-1);
でもOKですね。
やはり、一発関数はないですか。
みなさまのアイディアを参考にして、いろいろと考えてみようと思います。
個人的には、monaaさんのが一番シンプルだなー、と思いました。
っていうか、これならあきらめなければ、思いつきましたね。^^
努力と発想力の瞬発力が足りない証拠です。
みなさん、ありがとうございました。
ツイート | ![]() |