- AutoHotkey スレッド part18
955 :名無しさん@お腹いっぱい。[sage]:2014/09/18(木) 03:17:50.15 ID:k1/L8noe0 - 自分も少し興味あったので、あえて別な書き方で朝鮮・・・(置換はStringReplaceコマンド使用)
一応関数にしてみたけど、汎用性無し ※sch_str と rep_str 全部書くと書き込めないので途中省略(こうしても1回じゃ書き込めないので分割) str := "12345あいうえお+:*<>、?/_abcde!""#$%&'()―-=VWXYZ" ;全角英数を半角に sch_str := ["0","1", 〜 ,"8","9","a","b", 〜 ,"y","z","A","B", 〜 ,"Y","Z"] rep_str := ["0","1", 〜 ,"8","9","a","b", 〜 ,"y","z","A","B", 〜 ,"Y","Z"] ret := henkan(str, sch_str, rep_str) MsgBox, % ret ;全角&半角記号を半角空白に ;半角記号の「"」のみ「"」でエスケープ→記述する場合、「""""」とする sch_str := ["!","”", 〜 ,"/","_","!","""", 〜 ,"/","_"] rep_str := A_Space ret := henkan(str, sch_str, rep_str) MsgBox, % ret
| - AutoHotkey スレッド part18
956 :名無しさん@お腹いっぱい。[sage]:2014/09/18(木) 03:18:24.58 ID:k1/L8noe0 - henkan(str, search_str, replace_str) {
if (! replace_str.MinIndex()) { ;Objectかどうかの判断をこうしたが、正当な判断方法はどうするのか分からない loop, % search_str.MaxIndex() { StringReplace, str, str, % search_str[A_Index], % replace_str } } else { loop, % search_str.MaxIndex() { StringReplace, str, str, % search_str[A_Index], % replace_str[A_Index] } } return %str% }
| - AutoHotkey スレッド part18
957 :名無しさん@お腹いっぱい。[sage]:2014/09/18(木) 12:38:54.86 ID:k1/L8noe0 - >>956
Objectかどうかの判断方法が分かったので関数を訂正 henkan(source_str, search_str, replace_str) { if (IsObject(replace_str)) { ;(1)Objectかどうかの判断(1)と(2)は結果同じ(wikiより) ;if (replace_str) { ;(2) 〃 〃 ←分かり難い loop, % search_str.MaxIndex() { StringReplace, source_str, source_str, % search_str[A_Index], % replace_str[A_Index] ;replace_strがObjectの場合 } } else { loop, % search_str.MaxIndex() { StringReplace, source_str, source_str, % search_str[A_Index], % replace_str ;replace_strがObjectではない場合 } } return %source_str% }
|
|