C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 文字変換


(過去ログ 129 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■76646 / inTopicNo.1)  文字変換
  
□投稿者/ まあさ (1回)-(2015/07/29(Wed) 12:05:22)

分類:[VB.NET/VB2005 以降] 

Dim str AS String = "10000"
str.ToString("C") とすると "\10,000"と変換されますが、
反対に、"\10,000"の値を「10000」に変換したい。

str.Replace("\", "")やstr.Replace(",", "")を使っても駄目でした。

お解りの方よろしくお願いします



引用返信 編集キー/
■76647 / inTopicNo.2)  Re[1]: 文字変換
□投稿者/ shu (765回)-(2015/07/29(Wed) 12:24:44)
No76646 (まあさ さん) に返信

数値への変換なので
Dim d = CDec("\10,000")

とか

Dim d = Decimal.Parse("\10,000", Globalization.NumberStyles.AllowThousands Or Globalization.NumberStyles.AllowCurrencySymbol)

とか

Dim d = 0D
If Decimal.TryParse("\10,000", Globalization.NumberStyles.AllowThousands Or Globalization.NumberStyles.AllowCurrencySymbol, Nothing, d) Then
End If

のような感じです。
引用返信 編集キー/
■76649 / inTopicNo.3)  Re[2]: 文字変換
□投稿者/ PATIO (1回)-(2015/07/29(Wed) 13:11:52)
No76646 (まあさ さん) に返信
既に回答はついていますが、書かれている内容では今一つピンとこなかったので
一言だけ。

文字列と数値の違いがはっきり分かるように質問された方が良いと思います。

最初の Dim str AS String = "10000"だと、strの内容は文字列になります。

str.ToString("C") とすると "\10,000"と変換 ・・・これも文字列です。

反対に、"\10,000"の値を「10000」に変換したい。と書かれていますが、
「反対に」という言葉がある為に文字列の"10000"に戻したいのかなと取れます。
で、わざわざ「」で括っているのでもしや数値にしたいのかなとも取れます。

話をすっきり通したい場合は、文字列の"10000"とか、数値の10000と言った風に
はっきり書いてしまった方がすっきりします。
文字列と数値は画面に表示すると同じに見えますが、データとしては別の物です。
この辺を直感的に理解できるようになるとプログラミングが少し楽になります。


引用返信 編集キー/
■76654 / inTopicNo.4)  Re[1]: 文字変換
□投稿者/ WebSurfer (635回)-(2015/07/29(Wed) 14:41:01)
No76646 (まあさ さん) に返信

直接の答ではないですが・・・

今まで VB.NET の型変換や遅延バインディング等に頼って、型をあまり意識
しないでプログラムを書いてきたのでしょうか?

もしそうなら、今後は Option Strict On に設定してプログラミングするこ
とをお勧めします。

VB は、型を強く意識しなくても容易にプログラムが作成できるよう配慮され
ており、それが逆に分かりにくいバグを生むといった問題の元になっています。

C# ではコンパイルエラーになって実行前に容易に修正できる型の間違いが、
VB.NET の Option Strict Off(デフォルトでこれのはず)では見つからず、
デバッグ時もしくはもっと後のリリース後に問題が出るということがあると
思います。

Option Strict On にすれば、イヤでも型を強く意識せざるを得ません。

そうすれば、最初に質問にあった、

> Dim str AS String = "10000"
> str.ToString("C") とすると "\10,000"と変換されますが

というのは、以下のようにすべきと気がつくと思いますし、

Dim i As Int32 = 10000
Dim str As String = i.ToString("C")

String 型の "\10,000" を Int32 型もしくは Decimal 型の 10000 にする
にはどうするのが適切かも考え付くと思いますので。

引用返信 編集キー/
■76655 / inTopicNo.5)  Re[2]: 文字変換
□投稿者/ まあさ (2回)-(2015/07/29(Wed) 15:11:12)
shuさん 、ありがとうございました
無事解決できました。

また、 WebSurferさん、PATIOさん、ご指摘ありがとうございました

今後とも、ご迷惑をおかけすると思いますがよろしくお願いします


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -