<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />大家好,我试图将一个简单的下划线(_)替换为每个具有任何可想象的“特殊”字符的列名称,而不必为每个字符执行单独的 if 语句。
假设第 1 列标记为 Test1%good#parts,第 2 列标记为 Test2*Fail#Opens,等等
我希望重命名的列名称一致 - Test1_good_parts、Test2_Fails_Opens 等。 列中的数据是计数(数字、连续或序数)。
我尝试过以下版本:
spec_char = or(" ","~","`","!","@,#","$","%","^","&","*","(" ,")","-","+","\","|","[","[","]","<",">","?","/"," ." // 这里没有下划线
);
dt = 当前数据表();
col_name_list = dt<< 获取列名( string );
nc = N 列( dt );
对于( i = 1, i <= nc, i++,
one_col_name = col_name_list ;
如果(
包含( one_col_name, eval(spec_char) ),
列( i ) << 设置名称( Substitute( one_col_name, eval(spec_char) , "_" ) )
);
);
但rep是一种模式,其中eval(spec_char)正在寻找一个字符。
有没有一种干净的方法来执行这种类型的组替换?
谢谢。
Regex 函数应该可以很好地解决此问题:
dt =当前数据表() ;
为了(我= 1 ,我<=北科尔( dt ) ,我++,
柱子( dt ,我) <<设置名称(正则表达式(柱子( dt ,我) <<得到名字, “\W” , “_” ,全局替换))
) ;
这是一个可以执行您想要的操作的脚本:
名称默认为此处( 1 ) ;
dt =当前数据表() ;
科名= dt <<获取列名( 细绳 ) ;
为了( 我= 1 ,我<= N 项(姓氏) ,我++,
字数= 1 ;
新名字= ”” ;
尽管(单词( 字数,科名, " !@#$%^&*()-+[]<>?/\|" ) != ”” ,
如果( 字数> 1 ,
新名字=新名字|| “_”
) ;
新名字=新名字||单词( 字数,科名, " !@#$%^&*()-+[]<>?/\|" ) ;
字数=字数+ 1 ;
) ;
柱子( dt ,科名) <<设置名称(新名称) ;
) ;