複数行文字列, テキストフィルタ

複数行文字列, テキストフィルタ (Multiline String, Filter by Text)

任意の検索テキストで複数行の文字列をフィルタリングします。検索テキストが含まれる行のみ出力されます。複数テキストによる OR 検索をしたい場合は “USA,U.S.,United States” のようにカンマ区切りで指定します。

2019-11-22 (C) Questetra, Inc. (MIT License)
https://support.questetra.com/ja/addons/multiline-string-filter-by-text/

Configs
  • A: 複数行文字列が格納されている文字列型データ項目を選択してください *
  • B: 検索テキストをセットしてください (例 “USA” “USA,U.S.” ) * #{EL}
  • C: フィルタされた文字列が格納される文字列型データを選択してください (更新) *
Script
// (c) 2019, Questetra, Inc. (the MIT License)
// Notes:
// Cannot specify search terms that contain a comma.
// For "AND search", try to place this Automated Step serially.
// Special characters in search text settings have no meaning (literal string).
// Notes(ja):
// カンマを含む検索語は指定できません
// "AND検索" は自動工程の直列配置をお試しください
// 検索テキスト設定の特殊文字に意味はありません(リテラル文字列)


//////// START "main()" /////////////////////////////////////////////////////////////////
main();
function main(){ 

//// == Config Retrieving / 工程コンフィグの参照 ==
const dataIdA     = configs.get( "conf_DataIdA" ) + "";     // config required
const searchTexts = configs.get( "conf_SearchTexts" ) + ""; // config required
const dataIdC     = configs.get( "conf_DataIdC" ) + "";     // config required

if( searchTexts === "" ){
  throw new Error( "\n AutomatedTask ConfigError:" +
                   " Config {Search Texts} is empty \n" );
}


//// == Data Retrieving / ワークフローデータの参照 ==
const inputString = engine.findDataByNumber( dataIdA ) + "";
const arrInputString = inputString.split("\n");
engine.log( " AutomatedTask MultilineString:" + 
            " String {A}, number of lines: " + arrInputString.length );


//// == Calculating / 演算 ==
let   outputString = "";
const arrSearchTexts = searchTexts.split(",");
for( let i = 0; i < arrSearchTexts.length; i++ ){
  engine.log( " AutomatedTask Search Text[" + i +"]: " + arrSearchTexts[i] );
  if( arrSearchTexts[i] === "" ){
    throw new Error( "\n AutomatedTask ConfigError:" +
                     " Config {Search Text[" + i +"]} is empty \n" );
  }

}
for( let i = 0; i < arrInputString.length; i++ ){
  for( let j = 0; j < arrSearchTexts.length; j++ ){
    let contain = new RegExp( arrSearchTexts[j]
                              .replace(/[.*+?^=!:${}()|[\]\/\\]/g, '\\$&')
                            ); // Escaping for a literal string search
    // For a wider range of values, comment out and use Patterns with special characters
    if( contain.test( arrInputString[i] ) ){
      outputString += arrInputString[i];
      outputString += "\n";
      break;
    }
  }
}
outputString = outputString.replace(/[\n]*$/, "");


//// == Data Updating / ワークフローデータへの代入 ==
if( outputString === "" ){
  engine.log( " AutomatedTask DataUpdating: Output Text empty" );
}
engine.setDataByNumber( dataIdC, outputString );

} //////// END "main()" /////////////////////////////////////////////////////////////////

Download

Capture

任意の検索テキストで複数行の文字列をフィルタリングします。検索テキストが含まれる行のみ出力されます。複数テキストによる OR 検索をしたい場合は "USA,U.S.,United States" のようにカンマ区切りで指定します。

Notes

  1. カンマを含む検索語は指定できません
  2. “AND検索” は自動工程の直列配置をお試しください
  3. 検索テキスト設定の特殊文字に意味はありません(リテラル文字列)

See also

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

%d人のブロガーが「いいね」をつけました。