- PR -

3桁区切りについて

投稿者投稿内容
ばなな
ベテラン
会議室デビュー日: 2005/06/16
投稿数: 91
投稿日時: 2005-08-18 16:11
VB.NETアプリケーションで開発を行っております。
1000バイト(文字型)ある数値を3桁ごとのカンマ区切りにするにはどうしたらいいのか
悩んでおります。
レスでは数値に変換してカンマ区切りにするという方法でしたが、
数値に変換できない(オーバーフロー)ので関数を作成しないといけない
でしょうか?皆様のご指導お願いいたします。
小僧
大ベテラン
会議室デビュー日: 2005/06/24
投稿数: 122
投稿日時: 2005-08-18 16:21
こんにちは。

VB.NET は触ったことが無いのですが、
文字列の中から 3 桁ずつ Mid ( のような関数 ) で取得して
カンマ区切りにしていけばいいのでは?
→ そのカンマ区切りの文字列は別の変数にいれるのですか?
ファイルにはくのですか?
この変がよく分からないのですが。

そういうことでは無くて?
117
ベテラン
会議室デビュー日: 2005/05/09
投稿数: 94
お住まい・勤務地: 大阪府
投稿日時: 2005-08-18 16:36
String.Substring()で3文字ずつ取ってきてカンマと繋いでいくのが簡単かと.
小数点が混じるときは開始位置に注意が必要ですが.
引用:

ばななさんの書き込み (2005-08-18 16:11) より:
1000バイト(文字型)ある数値を3桁ごとのカンマ区切りにするにはどうしたらいいのか悩んでおります。
レスでは数値に変換してカンマ区切りにするという方法でしたが、
数値に変換できない(オーバーフロー)ので関数を作成しないといけないでしょうか?



数字で1000桁(1文字2バイトとして500桁?)というわけではないですよね?
数字で1000桁or500桁を扱える数値型は.NET FrameWorkのクラスライブラリにはなかったような気がします.
文字列が空白or0埋めされているということなら,除去してから
Convertクラスで変換してSystem.String.Format()で整形できますが...
_________________
Future Is What We Are!

[ メッセージ編集済み 編集者: 117 編集日時 2005-08-18 16:46 ]
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2005-08-18 16:44
>1000バイト(文字型)ある数値
"数字のみの1000バイトの文字列"と言った方が正しいかもしれませんね。"数値"ではなくて"数字"。

>関数を作成しないといけないでしょうか?

おそらく作成しないといけないでしょうね。

StringやStringBuilderのInsert()を使って3桁ごとにカンマで区切ればいいんじゃないでしょうか。
1000バイトもあるということですから、StringBuilderを使った方が良いでしょう。

[ メッセージ編集済み 編集者: 一郎 編集日時 2005-08-18 16:44 ]
ばなな
ベテラン
会議室デビュー日: 2005/06/16
投稿数: 91
投稿日時: 2005-08-18 16:47
説明不足で申し訳ございません。
DBから取得した値(文字型)を画面に表示する際、データが数字の場合
3桁毎に区切りをするとういう感じです。
(ちなみに数文か文字かの判断はできるようになっています)
数字が登録される場合、1000桁まで入力可能となり入力チェックを行っております。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2005-08-18 16:58
スレ本題とは直接関係ありませんが、その1000桁もある数値は計算に使用したりしないんですか?表示だけ?
もし計算するなら、そのデカい値を表すクラスを作るとオブジェクト指向風味で良いかもしれませんね。
GiganticDecimalとかいって。
ギガンティックデシマルって・・かっこいいな。

あ〜、でもVB.NETだと演算子を定義できないのか・・・。VB2005だとできるらしいですけどね。
小僧
大ベテラン
会議室デビュー日: 2005/06/24
投稿数: 122
投稿日時: 2005-08-18 17:01
こんばんは。

>DBから取得した値(文字型)を画面に表示する際、データが数字の場合
っていう条件の場合、他の方が示したメソッドを使えば?
というのは違うんですかね?

あと、文字列の中は「数字」と「文字」の混合はないのでしょうか?
→ もしかして、この場合の対処方法を質問していますか?

>>関数を作成しないといけないでしょうか?
>おそらく作成しないといけないでしょうね。
私もそう思います。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-08-18 17:02
文字列なら正規表現でどうでしょう。

コード:
string target = "123456789012345678901234567890";
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"(?<=\d)(?=(\d\d\d)+$)");
string result = reg.Replace(target, ",");

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