本日はUnity C#の勉強わくです。
C#にはデータを扱う様々な型があります。
今回は
string _number = "1234";
をfloat型で返すような処理をおこないます。
〇やりたかったこと
・HoloLens 2ように作っているテンキーで入力した数字をそのままfloat型のデータで扱いたい。
・1+1のような演算子込みの文字式の結果を(いずれ)2としてfloat(もしくはint)で扱いたい
〇Single.Parse メソッド
通常string型をそのままfloat型として扱うことはできません。
今回はSingle.Parseを使用しました。
void Start() { string _sample = "1234"; float _number = float.Parse(_sample); }
Unityで適当なスクリプトを作成してStart(){}に上のように記述しました。
float.Parse()でstring型をfloatとして返してくれます。
これを応用して簡単な文字式を計算してみます。
[SerializeField] List<string> _samplelist; // Start is called before the first frame update void Start() { string phrase = "123+456"; string[] words = phrase.Split('+'); foreach (var word in words) { _samplelist.Add(word); } float _number 1= float.Parse(_samplelist[0]); float _number2 = float.Parse(_samplelist[1]); float result = _number1 + _number2; Debug.Log(result); }
ここでは123+456というstring型の式を計算します。
一度123,456という二つのfloat型の変数に分け、それらを合成しています。
ここでは
string[] words = phrase.Split('+');
という一文で+という区切りで分けています。
Pharese.Split()は()内の条件で文字列を区切り部分配列を作成します。
foreach (var word in words) { _samplelist.Add(word); }
foreach文で分離した文字式を配列の要素に追加しています。 これは123+456の場合[0]、[1]が、123+456+789の場合[0]、[1]、[2]の要素が入れられます。
float _number1 = float.Parse(_samplelist[0]); float _number2 = float.Parse(_samplelist[1]);
number1,number2はそれぞれの123,456でぐぎった数字の文字列をfloat型に変換します。
float result = _number1 + _number2; Debug.Log(result);
最後にこれらを加算しています。
これを実行すると次のようにLogがでます。
2つの数の加算なので簡単にできましたが、3つの数やほかの加減積商がかかわってくるとさらに解析する仕組みが必要になりそうです。