Sustitución de caracteres especiales en los nombres de las columnas<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola a todos, estoy tratando de sustituir un guión bajo simple (_) en cada nombre de columna que tenga cualquier carácter "especial" concebible sin tener que hacer declaraciones if individuales para cada carácter.
Digamos que la columna 1 está etiquetada Test1%good#parts, la columna 2 está etiquetada Test2*Fail#Opens, etc.
Quiero que los nombres de las columnas renombradas sean consistentes: Test1_good_parts, Test2_Fails_Opens, etc. Los datos de las columnas son recuentos (numéricos y continuos u ordinales).
He probado versiones de:
spec_char = o(" ","~","`","!","@,#","$","%","^","&","*","(" ,")","-","+","\","|","[","[","]","<",">","?","/"," ." // sin guión bajo aquí
);
dt = tabla de datos actual();
col_name_list = dt<< obtener nombres de columnas (cadena);
nc = N Cols( dt );
Para( i = 1, i <= nc, i++,
one_col_name = col_name_list ;
Si(
Contiene( one_col_name, eval(spec_char) ),
Columna( i ) << establecer nombre( Sustituir( one_col_name, eval(spec_char) , "_" ) )
);
);
Pero rep es un patrón donde eval(spec_char) busca un carácter.
¿Existe una forma limpia de realizar este tipo de sustitución de grupo?
Gracias.
Re: Sustitución de caracteres especiales en nombres de columnasGracias tanto a MS como a Jim, ¡ambos funcionan muy bien!
robar m
Re: Sustitución de caracteres especiales en nombres de columnasLa función Regex debería funcionar bien para esto:
dt = Tabla de datos actual () ;
Para ( i = 1 , i <= columna N ( dt ) , i ++,
Columna ( dt , i ) << escoger un nombre ( expresión regular ( Columna ( dt , i ) << obtener nombre , "\W" , "_" , REEMPLAZO GLOBAL ))
) ;
Re: Sustitución de caracteres especiales en nombres de columnasAquí hay un script que hará lo que quieras:
Nombres predeterminados hasta aquí ( 1 ) ;
dt = Tabla de datos actual () ;
colnames = dt << obtener nombres de columna ( cadena ) ;
Para ( i = 1 , i <= N artículos (nombres de pila) , i ++,
el recuento de palabras = 1 ;
elnuevonombrecol = "" ;
Mientras ( Palabra ( el recuento de palabras , colnames , " !@#$%^&*()-+[]<>?/\|" ) != "" ,
Si ( el recuento de palabras > 1 ,
elnuevonombrecol = elnuevonombrecol || "_"
) ;
elnuevonombrecol = elnuevonombrecol || Palabra ( el recuento de palabras , colnames , " !@#$%^&*()-+[]<>?/\|" ) ;
el recuento de palabras = el recuento de palabras + 1 ;
) ;
Columna ( dt , colnames ) << escoger un nombre (elnuevonombredecol) ;
) ;