質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

Q&A

解決済

3回答

3832閲覧

char.IsNumber で判別した数字を int型 変数 に代入したい。

fender0131

総合スコア121

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

0グッド

0クリップ

投稿2015/10/30 01:06

いつもお世話になっております。

char.IsNumber で判別した数字を int型 変数 に代入したいのですが、どのような方法がありますでしょうか?

以下作成途中のプログラムとなります。
ソースが長いので省略させて頂きました。

どなた様かご指導ご鞭撻の程よろしくお願い致します。

string hoge;
int color;

if (hoge != string.Empty)
{
if (char.IsNumber(hoge, 0))
{
if (i == 1)
{

//color = char.IsNumber(hoge, 0); // 型 'bool' を型 'int' に暗黙的に変換できません。 //color = int.parse(char.IsNumber(hoge, 0)); //'bool' から 'string' に変換できません。etc if (color == 0) { pen = new Pen(Color.White, 1); } if (color == 1) { pen = new Pen(Color.Red, 1); } if (color == 2) { pen = new Pen(Color.Green, 1); } ・ ・ ・

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ちなみに
こんな感じに書くこともできるのでよかったら参考にしてください
スッキリしたコードの上にバグもかなり少なくなると思います。

少し気になったのですが、引数の渡し方を少し工夫したほうがいいかもしれません。

string hoge; int color; if(int.TryParse(hoge[0].ToString() ,out color)) { switch(color) { case 0: pen = new Pen(Color.White, 1); break; case 1: pen = new Pen(Color.Red, 1); break; case 2: pen = new Pen(Color.Green, 1); break; default: pen = new Pen(Color.White, 1); break; } } else { //変換できなかったときの処理 }

投稿2015/10/30 02:56

編集2015/10/30 04:08
makiikeda1216

総合スコア128

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

Parseメソッドを使うと良いです。
int color= int.Parse(hoge);
ここが分かりやすいです。

先頭の1文字だけを変換するなら、hoge.Substring(0, 1)などで切り出してから、Parse()に渡せばよいです。

投稿2015/10/30 01:18

編集2015/10/30 01:19
Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fender0131

2015/10/30 01:28

お答えありがとうございます。 無事解決することができました。 hoge.Substring(0, 1)でも先頭文字を取得できるのですね。 大変勉強になりました。
guest

0

C#はあまり知りませんが、こんな感じではいかがでしょう?

if(char.IsNumber(hoge, 0)){ color = int.parse(hoge); if (color == 0) { ・・・ } ・・・ }

もしくは、外側のif文に条件を追加しても言いと思います。

if (hoge != string.Empty && char.IsNumber(hoge, 0)) {・・・}

文字列を数値に変換するには?[C#、VB]

投稿2015/10/30 01:14

編集2015/10/30 01:17
kaputaros

総合スコア1844

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tak1wa

2015/10/30 01:18

IsNumberメソッドは漢数字、マルチバイトもtrueになるのでint.parseでは入力によっては例外が発生してしまいますね。 >質問者さん そもそもIsNumberを意図的に使っているんでしょうか。int.TryParseというものもありますけど。
fender0131

2015/10/30 01:21

char.IsNumber(hoge, 0)で、 hogeに文字か数字か判断した値が入ってきていたのですね。 データの流れを追い切れていませんでした・・・ 大変助かりました。 ありがとうございました。
fender0131

2015/10/30 01:25

>Tak1wa様 皆様お答えありがとうございます。 意図的に使っています。 コンボボックスに 0:白 1:赤 2:緑 といったような項目を設定しており、 最初の数値を判断基準として、ペンの色を変更しております。
kaputaros

2015/10/30 01:41

> hogeに文字か数字か判断した値が入ってきていたのですね。 IsNumber()を呼び出したときに判断した値がhogeに入るのではなく、 hogeが数値かどうかを判断するためにIsNumber()を使っているのではないかと。 なので、戻り値がbooleanになるんです。 hogeには↑の処理の前に値を設定していないとならないと思います。 > Tak1waさん フォローありがとうございます。 C#では、マルチバイトだけでなく、漢数字もtrueになるんですね!? 知らなかったです。Javaと似ているけど、やっぱり違うものですね^^;
fender0131

2015/10/30 02:18

お答えありがとうございます。 分かりやすい解説ありがとうございます。 そのような動きの流れがあるのですね。 大変勉強になりました。 今回、Chironian様に教えて頂きましたhoge.Substring(0, 1)を使うことで、 プログラムが読みやすくなったため、Chironian様にベストアンサーを付けさせていただきました。 kaputaros様にもベストアンサーつけたかったのですが、申し訳ないです。
kaputaros

2015/10/30 02:33

いえいえ、お気になさらず。 よりよいやり方が見つかってよかったですね^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問