JSL Creazione di una nuova colonna da componenti in un'altra colonna Carattere scriptSupponiamo di avere una colonna di input e di voler creare una nuova colonna in base al suo contenuto. La colonna di input avrà sempre un totale di 8 barre come di seguito. Tuttavia, a volte ci saranno dati effettivi di lunghezza variabile tra di loro. Quindi ... Voglio indicare in una nuova colonna quando sono presenti dati con una semplice "Y" e tutti gli altri posti sarebbero "N" su un numero elevato di righe.
Colonna di input Desired_Output
//////// NNNNNNNNN
//////// NNNNNNNNN
//// a / b /// NNNNYYNNN
a //////// YNNNNNNNN
Tabella datiScriptingOggetto: JSL Creazione di una nuova colonna da componenti in un altro script di caratteri di colonnaPuoi usare la doppia espressione regolare in una formula:
Regex(Regex(:Input Column, "[^/]", "Y", GLOBALREPLACE), "/", "N", GLOBALREPLACE)
Una regex per sostituire tutto ciò che non è "/" con "Y" e un'altra per sostituire "/" con "N".
Oggetto: JSL Creazione di una nuova colonna da componenti in un altro script di caratteri di colonnaGrazie per la risposta. Non conoscevo questa funzione ed è utile / utile. Questo si prende cura delle barre ma mi dà una "Y" per ogni lettera nella stringa. Voglio solo una "Y" per tutti i caratteri tra le barre.Oggetto: JSL Creazione di una nuova colonna da componenti in un altro script di caratteri di colonnaPuoi aggiungere solo un'altra regex, che sostituisce molti caratteri con uno:
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 )
)
);Oggetto: JSL Creazione di una nuova colonna da componenti in un altro script di caratteri di colonnaTuttavia, per restituire 8 caratteri in ogni caso puoi usare un'altra formula, vedi formula2 in quella tabella:
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 )
)
)