対象の文字列の中に指定した文字がすべて存在するか知りたい
対象の文字列が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