2012-01-13 4 views
2

私はCSVスクリプトにエクスポートしています。最後に削除するかどうかを指定する ';'行のシンボル

構造体のリストをエクスポートします。私はStringWriterの助けを借りて書く。構造体フィールドの配列foreachサイクルでは、すべてのプロパティを反復処理し、すべてのプロパティの後に ';'を入れます。行末には、WriteLine()を配置します。

だから、出力として、私が持っている:

value1;value2;value3; 

を私がしたい:

value1;value2;value3 

質問です:私は何を得るから私が欲しいものを手に入れる方法、または何I'vに基づきますすでに作られています。

私は今3つのアイデアを持っている: "; \ R(\ n)が" だから何もこの組み合わせを置き換える

  1. を行の最後の2つのシンボルのようなものでなければなりません。
  2. プロパティが最後であることを確認します。
  3. 各行の末尾(改行の前)のシンボルをトリムします。

答えて

6

使用String.Join、このコードを試してみてください。それはあなたがどの用語が最後であるかをチェックすることを防ぎます。

http://msdn.microsoft.com/en-us/library/57a79xd0.aspx

var values = { "value1", "value2", "value3" }; 

string line = string.Join(";", values); 

ラインは

"value1;value2;value3" 
3

あなたの出力のための各ラインを形成するために

str.TrimEnd(';'); 
+0

大した文字列でも問題はありませんが、コピーには問題があります。 – codekaizen

1

通常、私はちょうどラインを形成した後、最後の文字を削除されます。

+0

-1 - 最後の文字を削除すると、再び文字列全体が作成されます。文字列 '.Join()'を使用する方が便利です。 –

+0

StringBuilderは文字列全体を再度作成するのではなく、 – Lartem

1

私はStringBuilderを使用して、ちょうど行います。私は、文字列のコピーを回避することができ

var builder = new StringBuilder(); 
// ... 
// add the text 
// ... 
builder.Length--; 

この方法です。

関連する問題