リストボックスの中の選択された文字列
例:Ford Taurus 75
から数字のみ(75)を取り出すにはどのようにしたら良いのでしょう?
IsNumberは文字列には使えませんし、最後から2文字取り出すなどの
方法でしょうか?(その場合3桁になったら対応不可能だし)
宜しくお願いします。
単語の区切りにスペースが入っているんだったら
それで単語を切り分けて、数字に変換できるもの
のみ取得すればいいんじゃない?
ただし
ABC 123 45
だと123と45が取得されるけどね。
どういう文字列から、取得しようとしているのかを明記しないと
具体的なアドバイスが出来ないかと。
スペース区切りであれば、abuさんのようにString.Splitで分割すればいいし、
末尾の数値だけほしい(ABC123のようなケース)であれば、末尾から数値でなくなる
位置を調べて、String.Substringで取得してもいいし。
# 正規表現を使う手もあるかも、、、(ワカラソ)
> 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 プロパティを設定するのです。
> 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
IL 解析してみると面白いですよ。
ときに、IsNumber メソッドは漢数字も OK にしてしまいますので、
http://jeanne.wankuma.com/tips/char/isnumber.html
本来は、IsDigit メソッドを使うべきだとは思います。
http://jeanne.wankuma.com/tips/char/isdigit.html
でも、それ以前に、後々の拡張性を考えると、やはり ValueMember... (^-^;)
そのために用意されているメンバですから。
どうも有り難うございまいました。
どのように解決したのかをきちんと報告しましょう。
このような対応をしていると、悪い印象しか与えません。
| ツイート |
|