カテゴリー:
秀丸エディタ
閲覧数:6 配信日:2025-01-28 16:36
Q.現在開いているファイルのフルパス名をクリップボードにコピーする際、下記のように文字列加工するには、それぞれどうすればよいですか?
現状マクロ
setclipboard filename;
現状結果例
l:\a\b\c\d.php
< やりたいことA >
\を/に置換した結果をクリップボードに貼り付けたい
l:/a/b/c/d.php
< やりたいことB >
指定文字列(l:\a\b\)を削除した結果をクリップボードに貼り付けたい
c\d.php
< やりたいことC >
\を/に置換後、指定文字列(l:/a/b/)を削除した結果をクリップボードに貼り付けたい
c/d.php
A.
filenameで取得した文字列の中の"\\"を"/"に置換してからクリップボードに入れればいいので、普通にやるなら以下のように1文字ずつ"\\"を探して置換するような面倒な処理になります。
最近の秀丸エディタだとJavaScriptが使えるので、JavaScriptで置換するなら「replaceAll」ってメソッド一発で出来て簡単になります。以下のようになります。(置換の所だけJavaScriptで処理する例)
$s = filename;
#i = 0;
#len = wcslen($s);
while( #i < #len ) {
if( wcsmidstr( $s, #i, 1 ) == "\\" ) {
$s = wcsleftstr( $s, #i ) + "/" + wcsmidstr( $s, #i + 1 );
}
#i = #i + 1;
}
setclipboard $s;
最近の秀丸エディタだとJavaScriptが使えるので、JavaScriptで置換するなら「replaceAll」ってメソッド一発で出来て簡単になります。以下のようになります。(置換の所だけJavaScriptで処理する例)
$s = filename;
jsmode "WebView2";
js {
var s = hidemaru.getVar("$s");
s = s.replaceAll("\\","/");
hidemaru.setVar( "$s", s );
}
setclipboard $s;
strreplaceなんて関数が追加されてる
秀シリーズサポートフォーラム/秀丸エディタ&関連ソフトサポート会議室