JSL 別の列のコンポーネントから新しい列を作成する 文字スクリプト入力列があり、その内容に基づいて新しい列を作成したいとします。 入力列には、以下のように常に合計 8 つのスラッシュがあります。 ただし、それらの間にさまざまな長さの実際のデータが存在する場合があります。 したがって... 単純な「Y」のデータがあり、他のすべての場所が多数の行で「N」になる場合、新しい列で示したいと思います。
入力列 Desired_Output
//////// NNNNNNNNN
//////// NNNNNNNNN
////a/b/// NNNNYYNNNN
///////// YNNNNNNNN
データ表スクリプティングRe: JSL 別の列のコンポーネントから新しい列を作成する 文字スクリプトどうもありがとうございました! そして、助けてくれた他のすべての人に。 Formula2はそれを釘付けにしました。
Re: JSL 別の列のコンポーネントから新しい列を作成する 文字スクリプトただし、それぞれの場合に 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 )
)
)Re: JSL 別の列のコンポーネントから新しい列を作成する 文字スクリプト多くの文字を1つに置き換える、別の正規表現を追加できます。
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 )
)
);Re: JSL 別の列のコンポーネントから新しい列を作成する 文字スクリプト返信いただきありがとうございます。 この機能に慣れていませんでしたが、便利です。 これでスラッシュは処理されますが、文字列内のすべての文字が「Y」になります。 スラッシュ間のすべての文字に 1 つの「Y」のみが必要です。Re: JSL 別の列のコンポーネントから新しい列を作成する 文字スクリプト式で double regex を使用できます。
Regex(Regex(:Input Column, "[^/]", "Y", GLOBALREPLACE), "/", "N", GLOBALREPLACE)
「/」以外のすべてを「Y」に置き換える正規表現と、「/」を「N」に置き換える正規表現。