[ 新規に投稿する ]

現在開いているファイルのフルパス名をクリップボードにコピーするNo.10522
red9 さん 25/01/24 14:48 [ コメントを投稿する ]
  現在開いているファイルのフルパス名をクリップボードにコピーする際、下記のように文字列加工するには、それぞれどうすればよいですか?

現状マクロ
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
[ ]
RE:10522 現在開いているファイルのフルパス名をクリップボードNo.10523
Iranoan さん 25/01/24 18:38 [ コメントを投稿する ]
  red9 三こんにちは Iranoan です
> 現在開いているファイルのフルパス名をクリップボードにコピーする際、下記のように文字列加工するには、それぞれどうすればよいですか?
コピーする前に文字列を関数を使って置き換えればよいです
> < やりたいことB >
> 指定文字列(l:\a\b\)を削除した結果をクリップボードに貼り付けたい
> c\d.php

> < やりたいことC >
> \を/に置換後、指定文字列(l:/a/b/)を削除した結果をクリップボードに貼り付けたい
> c/d.php
とある内「c/」の意味する所、何を残すべき対象か? が不明ですが、おおよそ次の要領です
//----------------------------------------------------------------------
loaddll hidemarudir + "\\HmJre.dll";
setclipboard strreplace(filename2, "\\", "/") ;// ←< やりたいことA >
//setclipboard dllfuncstr("ReplaceRegular", @".+\\(?=[^\\]+\\[^\\]+$)", filename2, 0, "", 0 );//←< やりたいことB >
//setclipboard dllfuncstr("ReplaceRegular", @".+/(?=[^/]+/[^/]+$)", strreplace(filename2, "\\", "/") , 0, "", 0 );//←< やりたいことC >
freedll;
[ ]
RE:10522 現在開いているファイルのフルパス名をクリップボーNo.10524
秀まるお2 さん 25/01/24 18:39 [ コメントを投稿する ]
  filenameで取得した文字列の中の"\\"を"/"に置換してからクリップボードに入れればいいので、普通にやるなら以下のように1文字ずつ"\\"を探して置換するような面倒な処理になります。

    $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;
[ ]
RE:10523 現在開いているファイルのフルパス名をクリップボーNo.10525
秀まるお2 さん 25/01/24 18:46 [ コメントを投稿する ]
  strreplaceなんて関数が追加されてるとは知らずでした。失礼しました。
[ ]
RE:10525 現在開いているファイルのフルパス名をクリップボーNo.10526
igus さん 25/01/26 11:17 [ コメントを投稿する ]
  JavaScriptでこういうことか出来るのかって分かって勉強になりました
[ ]
RE:10524 現在開いているファイルのフルパス名をクリップボーNo.10531
red9 さん 25/01/28 16:28 [ コメントを投稿する ]
  回答ありがとうございました 

>最近の秀丸エディタだとJavaScriptが使える
・初めて知りました。
・大変参考になりました。
[ ]

[ 新規に投稿する ]