<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bonjour à tous, J'essaie de substituer un simple trait de soulignement ( _ ) dans chaque nom de colonne qui a n'importe quel caractère "spécial" imaginable sans avoir à faire des déclarations individuelles si pour chaque caractère.
Disons que la colonne 1 est étiquetée Test1%good#parts, la colonne 2 est étiquetée Test2*Fail#Opens, etc.
Je veux que les noms de colonne renommés soient cohérents - Test1_good_parts, Test2_Fails_Opens, etc. Les données dans les colonnes sont des nombres (numériques et continus ou ordinaux).
J'ai essayé des versions de:
spec_char = ou(" ","~","`","!","@,#","$","%","^","&","*","(" ,"")","-","+","\","|","[","[","]","<",">","?","/"," ." // pas de trait de soulignement ici
);
dt = table de données actuelle();
col_name_list = dt<< obtenir les noms de colonne( string );
nc = N Cols( dt );
Pour( je = 1, je <= nc, je++,
one_col_name = col_name_list ;
Si(
Contient( one_col_name, eval(spec_char) ),
Column( i ) << set name( Substitute( one_col_name, eval(spec_char) , "_" ) )
);
);
Mais rep est un modèle où eval(spec_char) recherche un caractère.
Existe-t-il un moyen propre d'effectuer ce type de substitution de groupe ?
Merci.
Merci à vous deux MS et Jim, les deux fonctionnent très bien !
Rob M
La fonction Regex devrait bien fonctionner pour cela :
dt = Tableau de données actuel () ;
Pour ( je = 1 , je <= Col N ( dt ) , je ++,
Colonne ( dt , je ) << définir le nom ( Regex ( Colonne ( dt , je ) << obtenir le nom , "\W" , "_" , GLOBALREPLACE ))
) ;
Voici un script qui fera ce que vous voulez :
Noms par défaut ici ( 1 ) ;
dt = Tableau de données actuel () ;
noms de colonne = dt << obtenir les noms de colonnes ( chaîne ) ;
Pour ( je = 1 , je <= N articles ( noms de colonne ) , je ++,
nombre de mots = 1 ;
lenouveaunomdecol = "" ;
Alors que ( Mot (nombre de mots , noms de colonne , " !@#$%^&*()-+[]<>?/\|" ) != "" ,
Si (nombre de mots > 1 ,
lenouveaunomdecol = lenouveaunomdecol || "_"
) ;
lenouveaunomdecol = lenouveaunomdecol || Mot (nombre de mots , noms de colonne , " !@#$%^&*()-+[]<>?/\|" ) ;
nombre de mots = nombre de mots + 1 ;
) ;
Colonne (dt , noms de colonne ) << définir le nom ( le nouveau nom de col ) ;
) ;