- - PR -
StringBuilder,Appendメソッドでのフォーマット設定
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-11-20 11:31
いつもお世話になります。
表題の件でご存知の方がいらっしゃいましたらご教授ください。 WinXp VB.NET SQLServer2000 データテーブルの中身をCSVで出力しようとしています。 過去ログを参照させて頂き ==================================================== For intLoop As Integer = 0 To dtSource.Columns.Count - 1 sb.Append("{") sb.Append(intLoop).ToString() sb.Append("}") If Not intLoop = dtSource.Columns.Count - 1 Then sb.Append(",") End If Next For Each row As DataRow In dtSource.Rows writer.Write(sb.ToString(), row.ItemArray()) writer.Write(vbCrLf) Next ========================================================= とし,普通に出力することは出来ました。 問題は,sb.Append(intLoop).ToString()のところでフォーマットを指定 して出力する方法です(日付型など) 現在出力すると日付の部分が「2004/11/18 0:00:00」と出力されます。 これを「2004/11/18」と出力するにはどのように記述すれば良いでしょうか? ちなみにテーブルの型を取得してselect-caseで判断して日付型の時 にこの処理を行おうとしています。 よって =============================================================== Dim dtCol As DataColumn = dtSource.Columns(intLoop) Select Case dtCol.DataType.ToString Case Type.GetType("System.DateTime").ToString sb.Append("{") sb.Append(intLoop).ToString()★この部分でフォーマットを指定?? sb.Append(hoge) sb.Append("}") Case bit型の時などもフォーマットを揃えたい End Select ===================================================================== を最初の部分に追加していたのですが,単純にstring.formatなどでは変換できない ようなので・・・。 ご存知の方がいらっしゃいましたらご教授ください。 宜しくお願い致します。 | ||||
|
投稿日時: 2004-11-20 12:27
VBは詳しくないので正確なコードはかけませんが「★この部分でフォーマットを指定?」の所を
sb.AppendFormat("{{{0}:{1}}}", intLoop, "yyyy/MM/dd") にすればいけると思います。 後sb.Append(intLoop).ToString() のToStringはいらないんじゃ? | ||||
|
投稿日時: 2004-11-20 13:15
Kazuki様ご返答ありがとうございます。
.toStringはNullの時に使用しようかと思って付けていました。 sb.AppendFormat("{{{0}:{1}}}", intLoop, "yyyy/MM/dd") ですが, 出力結果が {11:yyyy/MM/dd},{12:yyyy/MM/dd}・・・・・・ となります。 むむ・・・。 詰まりました・・・。 | ||||
|
投稿日時: 2004-11-20 13:32
KAZUKI様
すいません。 ======================================== If dtCol.DataType.ToString = "System.DateTime" Then ★sb.Append("{") sb.AppendFormat("{{{0}:{1}}}", intLoop, "yyyy/MM/dd") ★sb.Append("}") Else sb.Append("{") sb.Append(intLoop).ToString() sb.Append("}") End If =========================================================== ★の部分を記述していた為,うまくいっていなかったみたいです。 後はLoopするときにsb.Append("{")を気をつけて出力すればいける と思います。 本当にありがとう御座いました。 | ||||
|
投稿日時: 2004-11-21 15:28
やっぱりこれのToStringって無意味なのでは? sb.Appendの戻り値はsbへの参照なので上のコードは sb.Append("{") sb.Append(intLoop) sb.ToString() sb.Append("}") と同じコードになります | ||||
|
投稿日時: 2004-11-22 08:17
Kazuki様
ご回答ありがとうございます。 イマイチsbの使い方がわかっていなくて(笑) ただ今勉強中です。 toString()はそういうことになるんですね・・・。 色々と試してみます。 ありがとうございました。 |
1