JSL通過另一個列字符腳本中的組件創建新列假設我有輸入列,並想根據其內容創建一個新列。 輸入列將始終總共有8個斜杠,如下所示。 但是,有時它們之間會有不同長度的實際數據。 因此... 我想在新列中指出何時存在帶有簡單“ Y”的數據,而在許多行上所有其他位置均為“ N”。
輸入列Desired_Output
//////// NNNNNNNNN
//////// NNNNNNNNN
//// a / b /// NNNNYYNNN
a //////// YNNNNNNNN
數據表腳本編寫回复:JSL從另一個列字符腳本中的組件創建新列您可以在公式中使用雙正則表達式:
Regex(Regex(:Input Column, "[^/]", "Y", GLOBALREPLACE), "/", "N", GLOBALREPLACE)
一個正則表達式用“ Y”替換不是“ /”的所有內容,另一種用“ N”替換“ /”的所有內容。
回复:JSL從另一個列字符腳本中的組件創建新列謝謝回复。 對該功能不熟悉,非常有用/有幫助。 這會照顧到斜杠,但字符串中的每個字母都會給我一個'Y'。 對於斜線之間的所有字符,我只想要一個“ Y”。回复:JSL從另一個列字符腳本中的組件創建新列您可以只添加另一個正則表達式,用一個正則表達式替換許多字符:
Names Default To Here( 1 );
dt = New Table( "Test",
Add Rows( 4 ),
New Column( "Input Column", Character, "Nominal", Set Values( {"////////", "////////", "////aaaa/b///", "aBCD////////"} ) ),
New Column( "Formula",
Character,
"Nominal",
Formula( Regex( Regex( Regex( :Input Column, "[a-z]+", "A", GLOBALREPLACE, IGNORECASE ), "[^/]", "Y", GLOBALREPLACE ), "/", "N", GLOBALREPLACE ) ),
Set Selected,
Set Display Width( 246 )
)
);回复:JSL從另一個列字符腳本中的組件創建新列Howewer,在每種情況下要返回8個字符,您可以使用另一個公式,請參閱該表中的Formula2:
New Table( "Test 3",
Add Rows( 4 ),
New Column( "Input Column",
Character,
"Nominal",
Set Values( {"////////", "////////", "////aaaa/b///", "aBCD////////"} )
),
New Column( "Formula",
Character,
"Nominal",
Formula(
Regex(
Regex(
Regex( :Input Column, "[a-z]+", "A", GLOBALREPLACE, IGNORECASE ),
"[^/]",
"Y",
GLOBALREPLACE
),
"/",
"N",
GLOBALREPLACE
)
),
Set Display Width( 246 )
),
New Column( "Formula2",
Character,
"None",
Formula(
item_lst = Words( Substitute( :Input Column, "/", "/;" ), ";" );
result_str = "";
For( i = 1, i <= N Items( item_lst ), i++,
If( item_lst[i] == "/",
result_str = result_str || "N",
result_str = result_str || "Y"
)
);
result_str;
),
Set Selected,
Set Display Width( 394 )
)
)