Ciao a tutti,
Ho diverse tabelle di dati che ho creato da altre tabelle, in ciascuna tabella di dati contiene stringhe di lunghezza variabile nel formato Carattere nello stesso nome di colonna. Ho aggiunto alcuni esempi di seguito. Sto cercando di rimuovere gli ultimi 4 caratteri della stringa dalla colonna e mantenere tutto il resto. Gli ultimi 4 caratteri sono sempre "DATI", . Ho provato a realizzare l'istruzione if per collegare diverse tabelle di dati e utilizzare Left() e Contiene() ma penso che il modo in cui l'ho scritto sia sbagliato. Spero di poter aiutare qualcuno in questa comunità da quando ho appena iniziato a imparare jmp jsl.
Ex:
Tabella dati 1
Fonte
FARAH_DATA
FARAH_DATA
FARAH_DATA
FARAH_DATA
Tabella dati 2
Fonte
MIKE_DATA
MIKE_DATA
MIKE_DATA
Questo è quello che voglio che ogni tabella di dati assomigli;
Tabella dati 1
Fonte
FARAH
FARAH
FARAH
FARAH
Tabella dati 2
Fonte
MIKE
MIKE
MIKE
Ho allegato il mio jsl come di seguito
dtList = {};
For( i = 1, i <= N Table(), i++,
tempdt = data table(i)<<GET name=""></GET>Molti modi per gestire questo. Alcuni esempi su come eliminare _DATA dalla stringa
Names Default To Here(1);<BR /><BR />str = "FARAH_DATA";
//Word
Show(Word(1, str, "_"));
//Contains and left/substr
Show(Substr(str, 1, Contains(str, "_", -1) - 1));
Show(Left(str, Contains(str, "_", -1) - 1));
//Substitute
Show(Substitute(str, "_DATA", ""));
//Regex
Show(Regex(str, "_DATA", "", GLOBALREPLACE));
Show(Regex(str, "^(.*?)(_DATA)", "\1"));
Utilizzo con datatable:
Names Default To Here(1)
dt1 = New Table("Untitled",
Add Rows(4),
New Column("Source",
Character,
"Nominal",
Set Values({"FARAH_DATA", "FARAH_DATA", "FARAH_DATA", "FARAH_DATA"})
)
);
dt2 = New Table("Untitled 2",
Add Rows(3),
New Column("Source",
Character,
"Nominal",
Set Values({"MIKE_DATA", "MIKE_DATA", "MIKE_DATA"})
)
);
dt_list = {dt1, dt2};
//using contains with left
//JMP16, if previous use For-loop
For Each({cur_dt}, dt_list,
Column(cur_dt, "Source") << Set Each Value(Left(:Source, Contains(:Source, "_", -1) - 1));
);