Google Apps Scriptで2つの文字列を比較する方法~等価演算子と厳密等価演算子の違いを解説
Google Apps Script(GAS)で文字列同士を比較する方法を紹介したいと思います。
文字列の比較方法は何通りかありますが、それぞれの比較の仕組みと違いを解説していきます。
文字列が一致しているか比較する方法
文字列が一致しているか比較する方法には、以下の2種類の方法があります。
- 等価演算子「==」
- 厳密等価演算子「===」
どちらも文字列が一致しているか比較するものですが、微妙に条件判定が異なります。
イコール2個「==」の等価演算子による比較
“=="を使った比較では文字列の中身が一致しているかの比較を行います。
例えば、下記のような場合には一致しているとして、trueと判定されます。
ただ、==の等価演算子はデータ型までは気にしません。
文字列型の数字と数値型の数字であっても内容が一致していれば、一致していると判定します。
let test = "1";
Logger.log((test == 1));
上記のようにtestはString型変数ですが、数値型の1でもtrueと判定されます。
さらに、trueを1と自動的に解釈し、以下のようなケースでも一致していると判定します。
イコール3個「===」の厳密等価演算子による比較
“==="の厳密等価演算子では、通常の等価演算子では確認しなかった、データの型も確認します。
同じ数字の1であっても、数値型の1と文字列型の"1″では別のものであると判断し、falseと判定します。
また、true/falseも厳格に反映し、1とtrueは同等と捉えず、また文字列のfalseと真偽値のfalseは別個のものと判定します。
等価演算子と厳密等価演算子はどちらがよい?
等価演算子と厳密等価演算子、どちらを使うべきか迷われる人もいると思います。
結論から言えば、厳密等価演算子の利用が推奨されます。
等価演算子の場合は、数字の1とtrueを同値としてとらえることがあり、それが誤った判定を引き起こす恐れがあります。
厳密等価演算子はデータの型も判定条件に含めているため、そうした事象は起きません。
厳密等価演算子では上手く判定できないようなロジックの場合を除き、デフォルトでは厳密等価演算子を使いましょう。
大文字・小文字が混在している場合は?
Google Apps Script(GAS)では、文字列の大文字と小文字を区別するようになっています。
そのため、同じ文字でも大文字と小文字が混在した文字列は異なる文字列と判定されます。
同一と判定されるようにするためには、比較対象の文字列を大文字もしくは小文字に変換しなければなりません。
文字列を大文字・小文字に変更する方法は以下の記事で解説しています。
文字列の大小を比較
文字列の比較に「<」や「>」も用いることができます。
例えば、「"あ" < “い"」の場合、五十音順で"あ"よりも"い"の方が後なので、trueと判定されます。
漢字の比較はどうなる?
では漢字の場合はどのようになるのでしょうか?
いくつかの漢字を比較してみた結果を紹介します。
漢字の場合は、基本的にその漢字の読みとして規定されているものとの比較になるようです。
しかし、山田(やまだ)と夜中(よなか)ではfalseとなり、一部例外があるようです。
文字列の長さを比較する場合
文字列の長さを比較したい場合には、lengthプロパティで文字列の文字数を取得した上で、比較します。
事前にlengthプロパティで文字列の長さを取得しているので、数値型による判定を行うことになります。
文字列の長さ・文字数を得るlengthプロパティの解説記事はこちら
まとめ・終わりに
今回、Google Apps Script(GAS)で文字列を比較する方法について紹介しました。
主に文字列では一致しているかどうか比較するケースが多いので、イコール2個の等価演算子とイコール3個の厳密等価演算子の違いを解説しました。
誤った判定を防ぐためには、厳密等価演算子を利用するのがオススメです。
その他に、>や<といった比較演算子を使った比較もできるので、文字列の条件判定に活用しましょう。
※Google App Scriptでの文字列の各種処理・操作方法は以下の記事でまとめています。
ディスカッション
コメント一覧
まだ、コメントがありません