Re : Comment déterminer si une chaîne contient des caractères en double et l'extraire ?Voici une façon de se débarrasser des doublons
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]
);
Re : Comment déterminer si une chaîne contient des caractères en double et l'extraire ?Quelques questions:
- Qu'est-ce que vous considérez comme un "mot" ? Quelque chose séparé par "_" et "." ?
- Que faire s'il y a plusieurs doublons ? Sont tous extraits/seulement les plus courts/seulement les plus longs/aucun ?
- La duplication peut-elle se produire à n'importe quel endroit de la chaîne ? La partie dupliquée est-elle toujours à la fin ?
Re : Comment déterminer si une chaîne contient des caractères en double et l'extraire ?Merci, votre méthode est très bonne!
Re : Comment déterminer si une chaîne contient des caractères en double et l'extraire ?Merci, en effet c'est un problème pratique ::
Chaque fois qu'il y a un GAI dans ce personnage, extrayez l'un des caractères commençant par lui chaque fois qu'il apparaît répété, quel que soit le nombre de fois qu'il apparaît.
Et il y aura certainement des doublons.
Re : Comment déterminer si une chaîne contient des caractères en double et l'extraire ?C'est une question intéressante. J'aime @txnelson la solution. En plus de son approche, c'est une situation où les expressions régulières peuvent être pratiques, alors voici une autre façon de le faire.
Les deux exemples fournis ont les modèles suivants :
- un préfixe peut être présent, par exemple "abp-g5".
- la chaîne/les caractères souhaités suivent le préfixe
- les caractères répétés/dupliqués correspondent exactement à la chaîne/aux caractères souhaités
- les caractères répétés/dupliqués sont séparés des caractères souhaités par un trait de soulignement
- il n'y a rien d'autre que des caractères dupliqués à la fin de la chaîne
- il y a au moins une chaîne/des caractères répétés/dupliqués présents
En supposant que ces règles définissent avec précision les noms de colonne qui doivent être modifiés, le code suivant mettra à jour tous les noms de colonne dans la "table de données actuelle" qui correspondent aux hypothèses ci-dessus. Les noms de colonne qui ne correspondent pas aux hypothèses ne seront pas modifiés.
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 ) );
);
Comment déterminer si une chaîne contient des caractères en double et l'extraire ?J'ai maintenant une table avec plus de 1000 colonnes et la plupart des noms de colonnes ont des mots en double qui doivent être extraits. S'il vous plaît, demandez aux grands, comment y parvenir avec JSL ?
Par exemple:
le nom de la colonne est abp-g5.GAIV_0099_P013_GAIV_0099_P013, puis extrayez GAIV_0099_P013 ;
Le nom de la colonne est abp-g5.GAI1997_GAI1997, puis extrayez GAI1997
Automatisation et scriptmacOSPersonnalisation de masse