<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 ,科名) <<設置名稱(新名稱) ;
) ;