tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^4: VB2005で通貨型(MDB)の扱い
投稿日: 2010/02/25(Thu) 18:44
投稿者魔界の仮面弁士
失礼しました。VB.NET2003 (VB7.1 / .NET 1.1) でしたね。


> # ちなみにString.Formatはほとんど使った事ないですが「より細かい制御」は
> # まだちょっと調べただけですが意外と複雑ですね…{0:0}をどう変えればどうなる等々
> # 今回の件のついては {0:0} で十分そうですが

基本形は、
 s = String.Format("{0} と {2} と {1}", a, b, c)
です。{番号}の位置に引数のデータが埋め込まれます。


書式を指定する場合には、{番号:書式}とコロンで区切って指定します。
指定できる文字は元データの型によって異なりますので、ヘルプで確認してください。
 Dim num As Integer = 4321
 Dim dt As Date = Now
 s = String.Format("0埋め5桁 = {0:00000}", num)
 s = String.Format("3桁区切り= {0:#,0}", num)
 s = String.Format("小16進数 = {0:x}", num)
 s = String.Format("大16進数 = {0:X}", num)
 s = String.Format("日付 = {0:yyyy/MM/dd HH:mm:ss.fffffff}", dt)
 s = String.Format("24時間法={0:%H}時、12時間法={0:tt %h}時", dt)


そして、幅(桁数)を指定する場合には、{番号,桁数}とカンマで区切って指定します。
書式と同時に指定する場合には、{番号,桁数:書式} という記述になります。
 s = String.Format("『{0,20}』" , num) '20文字分の幅があり、数値は右寄せ
 s = String.Format("『{0,-20}』", num) '20文字分の幅があり、数値は左寄せ
 s = String.Format("『{0,20:#,0}』", num) '20文字分の幅で、桁区切り有りで右寄せ


より詳しい解説はこちら。
http://msdn.microsoft.com/ja-jp/library/txafckwd.aspx



>> なお、書式化の際にはカルチャも明示した方が安全です。
>> (アプリケーションの仕様にもよりますが)

カルチャの指定例。

 Dim fmt As String = "{0:g yyyy/M/d dddd}"
 Dim ci As System.Globalization.CultureInfo
 ci = System.Globalization.CultureInfo.InvariantCulture
 MsgBox(String.Format(ci, fmt, dt), vbInformation, "日付")
 ci = New System.Globalization.CultureInfo("de-DE")
 MsgBox(String.Format(ci, fmt, dt), vbInformation, "独逸")
 ci = New System.Globalization.CultureInfo("ko-KR")
 MsgBox(String.Format(ci, fmt, dt), vbInformation, "韓国")
 ci = New System.Globalization.CultureInfo("ja-jp")
 MsgBox(String.Format(ci, fmt, dt), vbInformation, "日本")
 ci.DateTimeFormat.Calendar = New System.Globalization.JapaneseCalendar()
 MsgBox(String.Format(ci, fmt, dt), vbInformation, "和暦")

なお、カルチャとしては利用できませんが、旧暦用のクラスもあります。
http://blogs.wankuma.com/ogiogi/archive/2006/11/07/43917.aspx

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。