カンマの入った数字から値をとる方法
投稿者 YuO  (社会人)
投稿日時
2013/4/25 22:22:05
うーん,普通は
Int32.Parse(a, NumberStyles.Integer Or NumberStyles.AllowThousands)
や同TryParseなどを使いますかね……。
http://msdn.microsoft.com/ja-jp/library/c09yxbyt.aspx
http://msdn.microsoft.com/ja-jp/library/system.globalization.numberstyles.aspx
ロケールによって,桁区切り文字はカンマだったりピリオドだったりするので,
このあたりのカルチャ依存するメソッドを使った方がよいです。
Int32.Parse(a, NumberStyles.Integer Or NumberStyles.AllowThousands)
や同TryParseなどを使いますかね……。
http://msdn.microsoft.com/ja-jp/library/c09yxbyt.aspx
http://msdn.microsoft.com/ja-jp/library/system.globalization.numberstyles.aspx
ロケールによって,桁区切り文字はカンマだったりピリオドだったりするので,
このあたりのカルチャ依存するメソッドを使った方がよいです。
投稿者 (削除されました)  ()
投稿日時
2013/4/26 08:11:22
(削除されました)
投稿者 shu  (社会人)
投稿日時
2013/4/26 08:26:51
CInt("123,456,789")
は
123456789
になりますよ。
例外を考えるならYuOさんが提示されているようにTryParseを
使った方がよいかと思います。
Val関数は適当に数値を拾ってくれますが今回のように意図しない動きをする
場合があります。意図した動きをさせるために小細工が必要になったりします。
は
123456789
になりますよ。
例外を考えるならYuOさんが提示されているようにTryParseを
使った方がよいかと思います。
Val関数は適当に数値を拾ってくれますが今回のように意図しない動きをする
場合があります。意図した動きをさせるために小細工が必要になったりします。
投稿者 太郎冠者  (社会人)
投稿日時
2013/4/26 13:56:09
本題と関係ない話ですが
MsgBox(Str(b))
数値を文字列に変換する場合にStr関数を使用すると
正数の場合に先頭にスペースが入ってしまいますので
特別な意図が無い場合は、CStrやFormat、またはToStringなんかを
使用されたほうがいいですよ。
MSDN - Str 関数
http://msdn.microsoft.com/ja-jp/library/4y6a1sx7(v=vs.80).aspx
MsgBox(Str(b))
数値を文字列に変換する場合にStr関数を使用すると
正数の場合に先頭にスペースが入ってしまいますので
特別な意図が無い場合は、CStrやFormat、またはToStringなんかを
使用されたほうがいいですよ。
MSDN - Str 関数
http://msdn.microsoft.com/ja-jp/library/4y6a1sx7(v=vs.80).aspx
カンマの付いた数列から値を取り戻すのには骨が折れました。
いい方法を見つけたんだろうと思いますので
僕同様の、本学同窓の初学者のためにご報告申し上げます。
------------------
Dim a As String = "123,456,789"
Dim b As Integer = Val(a)
MsgBox(Str(b))
------------------
とやると "123" と表示されますが
------------------
Dim a As String = "123,456,789"
Dim b As Integer = Val(a.Replace(",", ""))
MsgBox(Str(b))
------------------
とすれば "123456789" になります。
まぁ、それだけのことですが
発見するのに結構苦労しました。
参考にしてもらえれば幸甚大であります。