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 )
)
)