Ri: Come determinare se una stringa ha caratteri duplicati ed estrarla?Ecco un modo per sbarazzarsi dei duplicati
theList = Words( "abp-g5.GAIV_0099_P013_GAIV_0099_P013", "_." );
For( i = N Items( theList ), i >= 1, i--,
If( N Rows( Loc( theList, theList[i] ) ) > 1,
Remove From( theList, i, 1 )
)
);
newName = theList[1] || "." || theList[2];
For( i = 3, i <= N Items( theList ), i++,
newName = newName || "_" || theList[i]
);
Ri: Come determinare se una stringa ha caratteri duplicati ed estrarla?Poche domande:
- Cosa consideri una "parola"? Qualsiasi cosa separata da "_" e "."?
- Cosa fai se ci sono più duplicati? Vengono estratti tutti/solo i più corti/solo i più lunghi/nessuno?
- La duplicazione può avvenire in qualsiasi punto della stringa? La parte duplicata è sempre alla fine?
Ri: Come determinare se una stringa ha caratteri duplicati ed estrarla?Grazie, il tuo metodo è molto buono!
Ri: Come determinare se una stringa ha caratteri duplicati ed estrarla?Grazie, in effetti questo è un problema pratico::
Ogni volta che c'è un GAI in questo personaggio, estrai uno dei caratteri che iniziano con esso ogni volta che appare ripetuto, non importa quante volte appare.
E ci saranno sicuramente duplicati.
Ri: Come determinare se una stringa ha caratteri duplicati ed estrarla?Questa è una domanda interessante. mi piace @txnelson la soluzione di. Oltre al suo approccio, questa è una situazione in cui le espressioni regolari possono essere utili, quindi ecco un altro modo per farlo.
I due esempi forniti hanno i seguenti modelli:
- può essere presente un prefisso, ad esempio "abp-g5".
- la stringa/i caratteri desiderati seguono il prefisso
- i caratteri ripetuti/duplicati corrispondono esattamente alla stringa/caratteri desiderati
- i caratteri ripetuti/duplicati sono separati dai caratteri desiderati da un carattere di sottolineatura
- non c'è nient'altro che caratteri duplicati alla fine della stringa
- è presente almeno una stringa/caratteri ripetuti/duplicati
Supponendo che queste regole definiscano accuratamente i nomi delle colonne che devono essere modificati, il codice seguente aggiornerà tutti i nomi delle colonne nella "tabella dati corrente" che corrispondono ai presupposti di cui sopra. I nomi delle colonne che non corrispondono ai presupposti non verranno modificati.
names default to here(1);
dt = current data table();
for( k = 1, k <= n cols(dt), k++,
colName = column(dt, k) << get name();
colName = regex( colName, "^.*?(.+)(?:_\1)+$", "\1" );
try( column(dt, k) << set name( colName ) );
);
Come determinare se una stringa ha caratteri duplicati ed estrarla?Ora ho una tabella con oltre 1000 colonne e la maggior parte dei nomi delle colonne ha parole duplicate che devono essere estratte. Si prega di chiedere ai grandi, come raggiungere questo obiettivo con JSL?
Per esempio:
il nome della colonna è abp-g5.GAIV_0099_P013_GAIV_0099_P013, quindi estrarre GAIV_0099_P013;
Il nome della colonna è abp-g5.GAI1997_GAI1997, quindi estrarre GAI1997
Automazione e scriptingMac OSPersonalizzazione di massa