透過 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)),"[]")
);