特定の名前をIFで検索するこんにちは
新しいコラムを設定しました。」ピン名」
PIN の番号を追加したいと考えています
それは、次の内容が含まれている場合を意味します。 gp_0コラム「テスト名" そのはずGP_0
または、次のものが含まれている場合gp_1テスト名では次のようにする必要がありますGP_1列内「ピン名」
または、次のものが含まれている場合gp_11テスト名では次のようにする必要があります「ピン名」列の GP_11
私が脚本を書きました
Column(dt,"PIN_NAME") << Formula ( If ( Contains( :TEST_NAME, "gp_0" ), "GP_0",
If( Contains( :TEST_NAME, "gp_1" ), "GP_1",
If( Contains( :TEST_NAME, "gp_10" ), "GP_10",
If( Contains( :TEST_NAME, "gp_11" ), "GP_11",
If( を含む( :TEST_NAME, "gp_12" ), "GP_12" ))))));
しかし、テスト名に gp_11 が含まれていても、数式が GP_1 を追加していることがわかります。
そこで私の質問は、検索用に正確な名前を設定するにはどうすればよいですか?

自動化とスクリプト作成ウィンドウズRe: 特定の名前をIFで検索するJMP は、条件が満たされるとすぐに If() ループを終了します。技術的には、「gp_11」には「gp_1」が含まれています。
次のように、If() ループを逆方向に書き直すことができます。
If(
Contains( :TEST_NAME, "gp_12" ), "GP_12",
Contains( :TEST_NAME, "gp_11" ), "GP_11",
Contains( :TEST_NAME, "gp_10" ), "GP_10",
Contains( :TEST_NAME, "gp_1" ), "GP_1"
);
しかし、チェックすべきかかりつけ医がたくさんいる場合、それは非常に長くて面倒になります。おそらくこのようなものがあなたのために役立つでしょう。
Uppercase( Regex( :TEST_NAME, "io_(gp_\d+)", "\1", IGNORE CASE ) );
「io_」に続いて「gp_」と任意の桁数を検索します。「IGNORE CASE」がオンになっているため、「GP」も正規表現を満たすようになります。それが望ましくない動作である場合は、その部分を省略してください。
Re: 特定の名前をIFで検索するこのコードを加工してみたところ、うまく機能しているようで、かなり高速に動作します
names default to here(1);
dt=current data table();
dt << new column("PIN_NAME", character);
theRows = dt << get rows where( contains(:TEST_NAME,"_gp_"));
for each( {fndRow,i}, theRows,
:PIN_NAME[fndRow] = word(1,uppercase(substr(:TEST_NAME[fndRow],contains(:TEST_NAME[fndRow],"_gp_")+1)),"[]")
);