対象の文字列の中に指定した文字がすべて存在するか知りたい
対象の文字列がABOで
指定文字がAとOの場合:
- ABOの中にAが存在するかを見る
- 存在しなければfalseを返す
- 存在すればOが存在するか見る
- 存在しなければfalseを返す
- 存在すればtrueを返す
結果、5まで実行してABOの中にAとOは存在するのでtrueを返す
指定文字がACの場合:
- ABOの中にAが存在するかを見る
- 存在しなければfalseを返す
- 存在すればCが存在するか見る
- 存在しなければfalseを返す
- 存在すればtrueを返す
結果、4まで実行してABOの中にAは存在するが、Cは存在しないのでfalseを返す
コード.gs
function myFunction() { var str = 'ABO'; var target = 'AO'; var conjunction = getAndConditional(str, target); Logger.log(conjunction); } function getAndConditional(str, target) { var values = target.split(''); for(var i = 0; i < values.length; i++) { var regexp = new RegExp(values[i]); if(regexp.test(str) === false) { return false; } } return true; } |
意訳この機能がやること 対象の文字列 探したい文字列 対象の文字列の中に、探したい文字列がすべて含まれるか判定して ログにtrue, falseで出力する この機能がやること targetの文字列を一つずつ分けて 文字数の数だけ繰り返す /A/のパターンを作って strの中に含まれなければ falseを返す 最後までfalseが返らなければtrueを返す |
ちょっと書き換えて、valuesを配列にして渡す
var values = ['A', 'O'];
コード2.gsfunction myFunction() { var str = 'ABO'; var values = ['A', 'O']; var conjunction = getAndConditional(str, values); Logger.log(conjunction); } function getAndConditional(str, values) { for(var i = 0; i < values.length; i++) { var regexp = new RegExp(values[i]); if(regexp.test(str) === false) { return false; } } return true; } |
補足
ABO の中に A があるかどうかは
上記のように書けるので
同じように B があるか、Oがあるかを繰り返し見ていく
ということをコード1, 2でやっています
関連記事
正規表現でAND検索を試してみる2
ABO の中に A があるかどうかは
function myFunction() { var str = 'ABO'; var result = /A/.test(str); Logger.log(result); } |
上記のように書けるので
同じように B があるか、Oがあるかを繰り返し見ていく
ということをコード1, 2でやっています
関連記事
正規表現でAND検索を試してみる2