C#文字の位置を取得するIndexOfの使い方
IndexOfメソッドとは
IndexOfメソッドの使い方
IndexOfメソッドのオーバーロード
IndexOfメソッドの使用例
終わりに
IndexOfメソッドとは
IndexOfとは、指定した文字の位置を取得することができるメソッドです。
systemクラスのメソッドなので、using system;とすることで使用することができまう。
ちなみに、Indexとは索引という意味があります。
IndexOfメソッドの使い方
IndexOf(“文字”)とすることで、指定された文字が何番目にあるか取得してきます。
※IndexOfの番号は0スタートです。
using system;
string str = "abcdeABCDE";
int index = str.IndexOf("A");
// 5
IndexOfメソッドのオーバーロード
IndexOfにはオーバーロードが定義されているので、目的に合った引数を渡します。
他にも多くのオーバーロードがありますが、使ったことがあるものだけ紹介します。すべてを見たい方はこちら。
※引数についてはこちらの記事を参照してください。
※オーバーロードについてはこちらの記事を参照してください。
IndexOf(string)
IndexOf(string, int)
using system;
string str = "abcdeABCDE";
str.IndexOf("a", 1);
// -1
str.IndexOf("A", 4);
// 5
渡した数値から検索が始まります。
4行目の場合はbから検索が始まります。b以降に”a”は出てこないので、-1という結果が表示されます。
7行目の場合は、aが0番目なので、eから検索が始まります。ただ索引開始が4番目からになるだけで、Aの位置は5番目のままです。
IndexOfメソッドの使用例
実際にこのメソッドだけで使用することは、ほとんどありません。Substringなどと組み合わせることが多いです。
Substringについてはこちら
ただ、使用するケースも存在するので参考までに紹介します。
関数電卓を作成するときに使用した経験があります。0.01という数値の入力を受け付けるときに、何も制限しなかった場合、「00.01」や「0.00.0.1」といった数値にならないデータが入力されてしまいます。
そういったときに if(Input.IndexOf(“0”) == 0)という条件式を追加すると【0が一番最初に合ったら】という条件が作れます。
この条件を利用数ることで、「00」という入力は制限することができます。ですが、「0.0」という数値も入力できなくなってしまうので、さらに条件を追加します。
次に、if(Input.IndexOf(“.”) == -1)という条件式を追加すると、【” . ” がなかったら】という条件が作れます。
この2つの条件を組み合わせることで、【0が一番最初に合って、 ” . ” がなかったら】という条件を作ることができるので、「0.0」の入力ができるようになります。
「00」を入力するときには” . “がないので、2回目の0が入力できません。
「0.00」を入力するときには、 ” . “があるので、2, 3回目の0が入力できます。
「0.0.0」を入力するときには、” . “が既にあるので、2回目の ” . “が入力できません。
「1000」を入力するときには、0が1番最初にないので、問題なく2回目以降の0が入力できます。
このように、入力値の制限をする条件を追加するために使用します。ただ、小数点の条件には、Containsメソッドを使った方が楽です。
別の記事で紹介しているのでよかったらぜひ!
Containsメソッドについて。
終わりに
IndexOfメソッドの使い方は理解できたでしょうか?私自身、未経験からエンジニアを目指して勉強をして転職をしましたがもっとポイントを押さえて書いてくれたらよいのに!!と感じるブログも多く存在しました。そんな部分も解消できるようなブログを書いていくつもりです。
まだ更新が足りずに、別の記事生成は追い付いていませんが、少しずつ更新していくつもりなので、お待ちください!