@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

空白込みの12ヶ月分のデータの文字列を12個に分けたい

1
投稿者投稿内容
chelsea
常連さん
会議室デビュー日: 2007/12/19
投稿数: 48
投稿日時: 2008-11-01 11:27
VB2005 SQLServerを使ったDBアプリケーションを開発しています。

あるテーブルの一列に12ヶ月分のデータが入っています。
例 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000 12000

これを12個のtextboxに分けたいのですが、
空白(スペース)が入っているためsubstringで文字列を分けてみてもうまくいきません。
(空白数が数値の桁によって変わってくるため、一定のsubstringの数字が変わってくる、ということです)

このような場合どう処理すればよいでしょうか?

[ メッセージ編集済み 編集者: chelsea 編集日時 2008-11-01 11:40 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-11-01 11:37
あなたは、この仕様について、どの様に説明を受けたのでしょう?
私には、
個別にはどの様なデータが、
どのような法則によって、
格納されているのかわかりません。


くわえて、
どの様な理由から substring を使おうと考え、
どの様にしたところ、
どの様に期待したことに、
どの様な結果だったので、
「うまくいきません」という結論になったのでしょう?


私は、各データの幅が決まっているなら、substring で実現できると思います。
しかし、月ごとにデータを独立させるほうが良いと思います。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-11-01 11:47
私もデータの意味がよくわかりませんがSpiltというメソッドならあります。
空白数が数値の桁によってどう変わってくるのか把握すればsubstringでもできると思いますけどね。
chelsea
常連さん
会議室デビュー日: 2007/12/19
投稿数: 48
投稿日時: 2008-11-01 12:03
申し訳ありません私の勘違いでした。
空白数が数値の桁によってどう変わってくるのか把握すればよいだけでしたね...
調べたところ数値の桁と空白数の法則がわかりましたので、substring で実装できそうです。

substring を12回も繰り返さず、簡単に月ごとにデータを独立させる方法がないものかと思いまして...
重ね重ね申し訳ありませんでした。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-11-01 12:13
引用:

chelseaさんの書き込み (2008-11-01 12:03) より:

substring を12回も繰り返さず、簡単に月ごとにデータを独立させる方法がないものかと思いまして...


私にはただの空白区切の数値のみの文字列に見えるのですが、考えが甘いですかね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2008-11-01 12:48
引用:

chelseaさんの書き込み (2008-11-01 12:03) より:
申し訳ありません私の勘違いでした。
空白数が数値の桁によってどう変わってくるのか把握すればよいだけでしたね...
調べたところ数値の桁と空白数の法則がわかりましたので、substring で実装できそうです。



どういう法則がわかったんでしょう?

その空白区切りのデータの仕様を考えた人の立場に立って考えてみましょう。
あるいは、その項目のデータを作成した側のプログラムを想像しましょう。

(1) 空白1つだけを区切り文字として使って12個の数値データをくっつけたもの(可変長)
(2) 数値と空白を合わせて一定の桁数に揃えたものを1つのデータとしてそれを12個くっつけたもの(固定長)
のどちらかの仕様なのではありませんか?
仕様を考えるときにそれをばらす方法を視野に入れずに決定することはまずありません。
#そもそもばらさなくていいように、別々のフィールドに保持することをまず考えるはずですが

最初の質問投稿で「空白数が数値の桁によって変わってくる」と書かれているので、
(2)のパターンではないのですか?
これならば、単純にまず一定の桁数で12個に分割し(Substringの出番)、
その上で分割した各項目をTrimして空白を取り除きます。


[ メッセージ編集済み 編集者: よねKEN 編集日時 2008-11-01 12:49 ]
明智重蔵
大ベテラン
会議室デビュー日: 2005/09/05
投稿数: 127
投稿日時: 2008-11-01 13:55
http://msdn.microsoft.com/ja-jp/library/aa332141.aspx
連続した空白
でsplitするとか 
1

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