最初に作ったツールは「特定のリストを作って専用のフォーマットに整形した上でテキストデータで出力するもの」という感じでしたが、そこで躓いた部分は正規表現による置換でした。その置換についてメモしておきたいと思って用意したのが下図のツールです。ここでいきなりUE4の話になりますが、UE4のアセット管理ツールであるコンテンツブラウザ上でアセットを右クリック「リファレンスをコピー」を選択すると、クリップボードにアセットの情報がコピーされます。それは以下のような書式です。'で、例えばあるアセットの場所をメールでお知らせするような時には、フルパスの前後の文字列が邪魔だったりします。それを正規表現の置換で除去するのが今回のツールです。リファレンスをコピーできることを最近同僚に教えてもらいました。これは便利!そしてアセットのリファレンス情報をツールの上段のテキストボックス内にペーストします。すると下図のように貼り付けられました。先に書いた通り、メールに記載したりするには余計な情報がごちゃっと付いています。次に「パスから余計な情報を除去」ボタンを押すと、下段のテキストボックスに置換された結果が表示されます。あとはオマケで「クリップボードへコピー」ボタンと「クリア」ボタンも追加しました。実装したものさて、ここで実装した内容は以下になります。入力すると文字列を全選択する・「クリア」ボタンでテキストボックス内の文字列を全消去する・「クリップボードへコピー」ボタンで文字列をクリップボードにコピーする・「パスから余計な情報を除去」ボタンでリファレンス情報を単なるフルパス情報に整形する1つずつ見ていきます。テキストボックス内での文字列の全選択ツールを作ってみて初めて気付いたのですが、普段はテキスト入力できるパネル内で当たり前のように可能な全選択ショートカットですが、これは実装しないと可能になりません。イベントに下記の2行を追記するだけです。Keys.A)textBoxInput.SelectAll();}文字列のクリアとクリップボードへのコピーこれらも実装は簡単で、ボタンのクリックイベントそれぞれに下記1行を追加するだけです。正規表現の置換には「RegularExpressions」を利用しました。LINQを使うとか色々方法があるっぽいのですが、よく検索で出てくるこちらを試しました。先頭に下記の1行を追加します。System.Text.RegularExpressions;次にボタンクリックイベントでの置換の内容です。//改行1つだけに置換textBoxResult.AppendText(st);}文字列を改行部分で分割して配列に代入し、for文で1行ずつ置換していく..といったような面倒なことをしなくても、改行を含んだ文字列に対して「Multiline(複数行)」オプションを指定してそのまま置換するだけでいけました。・文末に空行が複数ある場合に1行だけにする..を行っています。正規表現のルールはこちらの記事を参考にさせて頂きました。VB.NET正規表現の厄介なところは、文字列の指定が記号だらけになって内容も結果も分かり辛く、なぜ置換がうまくいかないかも判断し辛いところですね。内容がどう変わっていくかをチェックすることができます。置換するとキャリッジリターンまで置換対象になって改行文字の「\r\n」が「\n」だけになってしまい、テキスト出力すると謎の連続改行が入ってしまうといったことが起こり、原因究明にしばらく手間取りましたが、ステップ実行して変数の中身を調べると原因がすぐに分かりました。使うと「.+」によって「\r」が削られてしまいました。ようなメソッドで親フォルダパスを取得する方法は使わずあくまで置換でやりたかったので対処療法な感じになりましたが、どこかのタイミングで本職の方にちゃんとした指定方法を教えてもらおうと思っています。最初は空っぽ(null)▼ステップ実行でテキストボックスの内容が代入された様子("\r\n"が改行を表す部分)▼行頭の余計な情報が除去された(文末以外の空行も一緒に除去)▼行末の余計な情報が除去されたちなみに、置換結果の文字列はテキストボックスの中へ書き換えるのではなく「AppendText」を使って追記する形にしています。別の置換結果の文字列が存在する場合に新しい行へ追記したいと思ったからです。そのためには、置換の最後には必ず1回分の改行を行って終わるように記述しています。プロジェクトデータと実行ファイルGoogleドライブにアップしました。ドライブbinフォルダの中にexeが入っています。2017.11.18追記うわー今見るとすごい遠回りな置換をしてる。2017年11月11日"^.*?'(?<pass>[^.]+)"m.Groups["pass"].Value;これで取り出すのが手っ取り早そう。2017年11月11日アセット名を含まないパスとアセット名を別々に取り出したい時は".*?'(?<pass>/(.*?/)+)(?<name>[^.]+)"m.Groups["pass"].Value;m.Groups["name"].Value;これで抜き出せた。2017年11月11日UE4のアセットのリファレンス情報から命名規則チェックツールを作りたくて正規表現のルールを確認し直し中。こちらの動画がとても分かりやすかった。2017年11月11日こちらにもお世話になりました。TaskQuest<実装編>「TasukQuest」をどうやって作ったかのメモ書きの続きです。使う文字列をコピペするための補助ツール作りました。こちらからDLできます。UE4のアセットの命名規則チェックツールを作ってみたQiitaのUE4アドベントカレンダー初参加です。)連絡先moko.vfx★gmail.comお気軽にご連絡くださいはてなブログをはじめよう!moko_03_25さんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。