- PR -

Format関数

投稿者投稿内容
sachiko
常連さん
会議室デビュー日: 2003/11/26
投稿数: 36
投稿日時: 2003-12-01 01:34
現在、テキストボックスに値が入力されたら、文字を入力し終わり、テキストボックスからカーソルが外れると、日付に斜線が入るというものをつくり、下記のようにすれば動きました。
Double date= Convert.ToDouble(birthday.Text);
String myString = date.ToString( "####/##/##" );
birthday.Text=myString;
しかし携帯電話も同じようにハイホンが入るようにしようとしたところ、09011112222と入力したら、当然のごとくDouble型なので初めの0が消え、90-1111-2222となってしまいます。以前の書き込みや、ヘルプを見たのですが、よくわからず質問させていただきました。
どうかお力をお貸しください。よろしくお願いいたします。
Tatsu
会議室デビュー日: 2003/11/12
投稿数: 2
投稿日時: 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ライブラリで
数値書式指定文字列を調べると良いと思います。

 それでは、失礼します。
TEA-BREAK
会議室デビュー日: 2003/11/16
投稿数: 10
投稿日時: 2003-12-01 02:33
数値がだめなら、文字列として処理すれば良いのではないでしょうか?
MIDやSubStringなどで編集すれば出来ると思います。
sachiko
常連さん
会議室デビュー日: 2003/11/26
投稿数: 36
投稿日時: 2003-12-01 03:22
お二方、貴重なご意見ありがとうございます。
文字列のMIDなどまだまだわからないことが多くあり、
勉強させていただきました。
今回は、ご指摘をいただいたとおり、以下のようにコーディングしたところ正常に起動しました。お力添えに感謝いたします。
Double date= Convert.ToDouble(k_phoneNo.Text);
String myString = date.ToString( "000-0000-0000" );
k_phoneNo.Text=myString;
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-01 06:25
リファクタリング
引用:

sachiさんの書き込み (2003-12-01 03:22) より:

Double date= Convert.ToDouble(k_phoneNo.Text);
String myString = date.ToString( "000-0000-0000" );
k_phoneNo.Text=myString;


『電話番号』を、「date」という名前の変数に入れるのは、どうかと。
sachiko
常連さん
会議室デビュー日: 2003/11/26
投稿数: 36
投稿日時: 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文の判定式をどう書いていいかわかりません。
お力をお借りできないでしょうか?またもっと効率的なやり方がございましたらご指摘いただけると光栄です。
よろしくお願いいたします。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2003-12-01 13:09
こんにちわ。諸農です。

引用:

sachiさんの書き込み (2003-12-01 12:20) より:

というご意見で、プログラムは完成したのですが、そのテキストボックスに使用者が自動的に斜線が入るにもかかわらず、自らが斜線を引いてしまう方がおり、エラーが出てしまいます。



入力文字列から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/06/22
投稿数: 659
お住まい・勤務地: 愛知県
投稿日時: 2003-12-01 13:12
Convert.ToDateTime()を実行して、例外がスローされた際に、
「/」を付加する処理にしてはいかがでしょうか?

スキルアップ/キャリアアップ(JOB@IT)