- - PR -
Format関数
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-12-01 01:34
現在、テキストボックスに値が入力されたら、文字を入力し終わり、テキストボックスからカーソルが外れると、日付に斜線が入るというものをつくり、下記のようにすれば動きました。
Double date= Convert.ToDouble(birthday.Text); String myString = date.ToString( "####/##/##" ); birthday.Text=myString; しかし携帯電話も同じようにハイホンが入るようにしようとしたところ、09011112222と入力したら、当然のごとくDouble型なので初めの0が消え、90-1111-2222となってしまいます。以前の書き込みや、ヘルプを見たのですが、よくわからず質問させていただきました。 どうかお力をお貸しください。よろしくお願いいたします。 | ||||
|
投稿日時: 2003-12-01 02:32
はじめまして。Tatsuと申します。
日付や電話番号をDouble型の数値として扱っているので、一番上の桁が 0の場合、カスタム数値書式指定文字列の#では0を表示しないので 初めの0が消える結果になっています。 よって、カスタム数値書式指定文字列の0を使うとうまくいくと思います。 Double date= Convert.ToDouble(birthday.Text); String myString = date.ToString( "0000/00/00" ); birthday.Text=myString; Double型(構造体)のToString(String)メソッドの場合はMSDNライブラリで 数値書式指定文字列を調べると良いと思います。 それでは、失礼します。 | ||||
|
投稿日時: 2003-12-01 02:33
数値がだめなら、文字列として処理すれば良いのではないでしょうか?
MIDやSubStringなどで編集すれば出来ると思います。 | ||||
|
投稿日時: 2003-12-01 03:22
お二方、貴重なご意見ありがとうございます。
文字列のMIDなどまだまだわからないことが多くあり、 勉強させていただきました。 今回は、ご指摘をいただいたとおり、以下のようにコーディングしたところ正常に起動しました。お力添えに感謝いたします。 Double date= Convert.ToDouble(k_phoneNo.Text); String myString = date.ToString( "000-0000-0000" ); k_phoneNo.Text=myString; | ||||
|
投稿日時: 2003-12-01 06:25
リファクタリング
『電話番号』を、「date」という名前の変数に入れるのは、どうかと。 | ||||
|
投稿日時: 2003-12-01 12:20
Tatsuさんの書き込み (2003-12-01 02:32) より: はじめまして。Tatsuと申します。 日付や電話番号をDouble型の数値として扱っているので、一番上の桁が 0の場合、カスタム数値書式指定文字列の#では0を表示しないので 初めの0が消える結果になっています。 よって、カスタム数値書式指定文字列の0を使うとうまくいくと思います。 Double date= Convert.ToDouble(birthday.Text); String myString = date.ToString( "0000/00/00" ); birthday.Text=myString; Double型(構造体)のToString(String)メソッドの場合はMSDNライブラリで 数値書式指定文字列を調べると良いと思います。 それでは、失礼します。 というご意見で、プログラムは完成したのですが、そのテキストボックスに使用者が自動的に斜線が入るにもかかわらず、自らが斜線を引いてしまう方がおり、エラーが出てしまいます。 if (0000/00/00という形になっている場合) { そのまま処理しない。 } else { Double date= Convert.ToDouble(birthday.Text); String myString = date.ToString( "0000/00/00" ); birthday.Text=myString; } というようにしたいのですが、if文の判定式をどう書いていいかわかりません。 お力をお借りできないでしょうか?またもっと効率的なやり方がございましたらご指摘いただけると光栄です。 よろしくお願いいたします。 | ||||
|
投稿日時: 2003-12-01 13:09
こんにちわ。諸農です。
入力文字列からDoubleへ、Doubleから形式文字列へと言う順番なら、 安易な方法としては、String.Replace()で入力文字列から「/」を取り 除いてみたらどうですか。 SDKトピック 「String.Replace メソッド [C#]」 ms-help://MS.NETFrameworkSDKv1.1.JA/cpref/html/frlrfSystemStringClassReplaceTopic.htm ではでは(^^)/ _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||
|
投稿日時: 2003-12-01 13:12
Convert.ToDateTime()を実行して、例外がスローされた際に、
「/」を付加する処理にしてはいかがでしょうか? |