JSL Erstellen einer neuen Spalte aus Komponenten in einem anderen SpaltenzeichenskriptAngenommen, ich habe eine Eingabespalte und möchte eine neue Spalte basierend auf deren Inhalt erstellen. Die Eingabespalte enthält immer insgesamt 8 Schrägstriche wie unten. Manchmal gibt es jedoch tatsächliche Daten unterschiedlicher Länge zwischen ihnen. So... Ich möchte in einer neuen Spalte angeben, wann Daten mit einem einfachen 'Y' vorhanden sind und alle anderen Stellen über eine große Anzahl von Zeilen 'N' sind.
Eingabespalte Desired_Output
//////// NNNNNNNNN
//////// NNNNNNNNN
//// a / b /// NNNNYYNNN
a //////// YNNNNNNNN
DatentabelleSkriptingBetreff: JSL Erstellen einer neuen Spalte aus Komponenten in einem anderen SpaltenzeichenskriptSie können doppelte Regex in einer Formel verwenden:
Regex(Regex(:Input Column, "[^/]", "Y", GLOBALREPLACE), "/", "N", GLOBALREPLACE)
Ein regulärer Ausdruck, um alles, was nicht "/" ist, durch "Y" zu ersetzen, und ein anderer, um "/" durch "N" zu ersetzen.
Betreff: JSL Erstellen einer neuen Spalte aus Komponenten in einem anderen SpaltenzeichenskriptDanke für die Antwort. War mit dieser Funktion nicht vertraut und sie ist nützlich / hilfreich. Dies kümmert sich um die Schrägstriche, gibt mir aber ein 'Y' für jeden Buchstaben in der Zeichenfolge. Ich möchte nur ein 'Y' für alle Zeichen zwischen den Schrägstrichen.Betreff: JSL Erstellen einer neuen Spalte aus Komponenten in einem anderen SpaltenzeichenskriptSie können nur einen weiteren regulären Ausdruck hinzufügen, der viele Zeichen durch eins ersetzt:
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 )
)
);Betreff: JSL Erstellen einer neuen Spalte aus Komponenten in einem anderen SpaltenzeichenskriptUm jedoch jeweils 8 Zeichen zurückzugeben, können Sie eine andere Formel verwenden, siehe Formel 2 in dieser Tabelle:
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 )
)
)