kotlinでボタンから取得した文字を、文字列(String型)を経て数字(Int型)に変化させる方法は?
結論はとしてはbutton.text.toString().toInt()と書くって本当?
連続2回変換するというところがポイントって本当?
こんな疑問に答えます。
僕はWordPressのブログでは月2万PV、自作のiPhoneアプリを2つリリースしています。
そんな僕が解説していきます。
作業環境
Android Studio Version 2.3.3
Kotlin 1.1.5
Mac OS Sierra 10.12.6
※記事内にプロモーションを含む場合があります
KotlinでStringからIntへ変換する方法【.text.toString().toInt()】
文字列(String型)を数字(Int型)へ
button.text.toString().toInt()
数字(Int型)を文字列(String型)へ
orangeNumber.toInt().toString()
※一気にやらなくてもいいですが、今回の目的からすると一気に書いたほうがスマートで綺麗です
コード
import kotlinx.android.synthetic.main.activity_main.* import android.view.View fun greenButtonTapped(view: View) { var applebutton = view as Button var rednumber = applebutton.text.toString().toInt() }
コードの解説
ボタンから取得した文章を一度String型へ変換し、連続でInt型に変換しorangeNoという、自分で作った変数に代入しています
(1)前提として、android.viewなどはimportして使用しています
(2)ここでstory boardで設定したボタンからのボタンの名前を取得し、変数applebuttonへ代入
(3)変数applebuttonをString型に変換し、そのままInt型に変換し、rednumberとして定義します
※ボタンの名前取得に関してはまた別です。
KotlinでStringからIntへ変換する場面【計算と表示を区別】
計算と表示を区別するのに使用
筆者は特に電卓アプリを作った際に、計算の時に使用する数と、ディスプレイに見やすく表示させる数を、区別して変換させたいと思い、これを調べました。
String型、Int型などの、数字文字の種類の名前を宣言し、変更する場合はそれをきちんと書く必要があります。
数字と文字は混同できない文化
プログラミングでは、機械に命令を送るので、数字や文字に関してきちんと正確に伝えなければいけません
特に数字に関しては「1」「いち」「一」「one」などは混同できないですし、
歴史背景的に「小数」「桁数の大きすぎる数」も、区別されて命令する文化になっているようです。
ちなみにSwiftだと「型推論」の機能があり、型の変換を適当にやっていても、自動で判別してくれます
ここに関してはSwiftの方が10倍楽です
数字を文字列にする場合
数字を文字列にするのは、toString()
参考:Kotlin Android Extensions
https://kotlinlang.org/docs/tutorials/android-plugin.html