リストボックスの文字列から数字のみ取り出すには?VB.NET

解決


Q  2005-12-31 14:20:58  No: 129328

リストボックスの中の選択された文字列
例:Ford Taurus 75
から数字のみ(75)を取り出すにはどのようにしたら良いのでしょう?
IsNumberは文字列には使えませんし、最後から2文字取り出すなどの
方法でしょうか?(その場合3桁になったら対応不可能だし)

宜しくお願いします。


abu  2005-12-31 16:17:10  No: 129329

単語の区切りにスペースが入っているんだったら
それで単語を切り分けて、数字に変換できるもの
のみ取得すればいいんじゃない?
ただし
ABC 123 45
だと123と45が取得されるけどね。


Blue  2005-12-31 22:05:18  No: 129330

どういう文字列から、取得しようとしているのかを明記しないと
具体的なアドバイスが出来ないかと。

スペース区切りであれば、abuさんのようにString.Splitで分割すればいいし、
末尾の数値だけほしい(ABC123のようなケース)であれば、末尾から数値でなくなる
位置を調べて、String.Substringで取得してもいいし。
# 正規表現を使う手もあるかも、、、(ワカラソ)


じゃんぬねっと  URL  2006-01-02 19:54:34  No: 129331

> IsNumberは文字列には使えませんし

Chars にしてしまえば使えるでしょう。

For i As Integer = 0 To stTarget.Length - 1
    Char.IsNumber(stTarget.Chars(i))
Next i

正規表現を使ってもいいし、数値位置が固定ならば Substring でも良いでしょう。

ここから私が最善だと思う正式な回答。

ListBox ならば通常その数値の部分は ValueMember にあてるべきでしょう。
表示されるのが DisplayMember です。
専用のクラスかまたは構造体のプロパティに割り当てるのが "普通" です。

つまり、DisplayMember には 専用のクラスの Code + Name プロパティを、
ValueMember には Code プロパティを設定するのです。


Blue  2006-01-02 22:46:02  No: 129332

> Chars にしてしまえば使えるでしょう。
Char.IsNumber メソッド (String, Int32)でもできますね。
# 内部では同じようなことしているんだろうケド。

For i As Integer = stTarget.Length - 1 To 0 Step -1
    If Not System.Char.IsNumber(stTarget, i)
        '〜〜〜〜〜
    End If
Next


じゃんぬねっと  URL  2006-01-03 21:28:36  No: 129333

IL 解析してみると面白いですよ。

ときに、IsNumber メソッドは漢数字も OK にしてしまいますので、
http://jeanne.wankuma.com/tips/char/isnumber.html

本来は、IsDigit メソッドを使うべきだとは思います。
http://jeanne.wankuma.com/tips/char/isdigit.html

でも、それ以前に、後々の拡張性を考えると、やはり ValueMember... (^-^;)
そのために用意されているメンバですから。


Q  2006-01-04 12:49:26  No: 129334

どうも有り難うございまいました。


どのように解決?  2006-01-04 20:57:46  No: 129335

どのように解決したのかをきちんと報告しましょう。
このような対応をしていると、悪い印象しか与えません。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加