通过 IF 搜索特定名称你好
我设立了一个新专栏“引脚名称”
并想添加一些 PIN
这意味着如果你包含GP_0在“测试名称“ 它应该是GP_0
或者如果你有包含GP_1在测试名称中应该是GP_1在专栏中“引脚名称”
或者如果你有包含GP_11在测试名称中应该是“引脚名称”列中的 GP_11
我写了剧本
Column(dt,"PIN_NAME") << 公式 ( If ( Contains( :TEST_NAME, "gp_0" ), "GP_0",
如果(包含(:TEST_NAME,“gp_1”),“GP_1”,
如果(包含(:TEST_NAME,“gp_10”),“GP_10”,
如果(包含(:TEST_NAME,“gp_11”),“GP_11”,
如果(包含(:TEST_NAME,“gp_12”),“GP_12”))))));
但我看到公式添加了 GP_1,即使我的测试名称中有 gp_11。
所以我的问题是,如何准确设置搜索名称?

自动化和脚本编写视窗回复:通过 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”也将满足正则表达式。如果这不是您想要的行为,请忽略该部分。
回复:通过 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)),"[]")
);