C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■103325 / 3階層)  ワイルドカードを含んだ置換について
□投稿者/ とっちゃん (833回)-(2024/09/23(Mon) 15:35:50)
No103324 (素人 さん) に返信
> ご返信ありがとうございます。
> 質問(実現したいこと)が整理できてませんでした。すみません。
>
> 【前提】
> ログオンユーザーが例えば、person1、person2といる場合、
> ユーザーにより、下記のようにパスが異なります。
>
> c:\users\person1\box\bbb\ccc
> c:\users\person2\box\aaa\bbb\ccc
>
> boxのフォルダ名はユーザー共通、位置もユーザー名フォルダ配下でユーザー共通です。
> bbb配下もユーザー共通ですが、boxとbbbの間にaaaのように別フォルダが挟まって見えるユーザーがいます。
>

C:\Users\person1 を見てるかどうかは、Environment.GetEnvironmentVariable("userprofile") で得た値と
比較する、あるいは、そうなっているであろうということでReplaceメソッドで置き換えてしまう(一致しなければ
変わらないので問題ない)という方法もあります。


> 【実現したいこと】
> 上記前提のパスの文字列をインプットとして
> どちらのユーザーも、
> %userprofile%\box\aaa\bbb\ccc
> のパスに変換したいです。
>

person1 は、C:\Users\person2\box\... を選択することがあり得るのでしょうか?
また、person1 が選択したという情報は、person2と共有されるのでしょうか?

そのあたりが質問者の思っている部分が伝わっていないのだと思います。

もし、person1 が選択しているであろうフォルダは C:\Users\person1\... となっており
person2は、C:\Users\person2\... となっていることが前提条件として成り立つのであれば
そのままReplaceメソッドで置き換えてしまえばよいと思いますが?

> @c:\users\ユーザー名 を %userprofile%に変換したい
> ログオンユーザーにより異なるユーザー名を*(ワイルドカード)として変換できず困っています。
>
> Abox\bbbがあればbox\aaa\bbb\cccに変換したい
>
文字列の入れ替えは、string.Replace メソッドで変換できます。

@の場合は、変換元が Environment.GetEnvironmentVariable("USERPROFILE") でとってきた値
変換後の値が "%USERPROFILE%" になります。

Aの場合は、変換元が "box\\bbb" 変換後の値が "box\\aaa\\bbb\\ccc" になります。

Replace メソッドには大文字小文字を区別しないパターンもあるのでどう使うかは状況を
考慮して使い分けしてください。


・Environment.GetEnvironmentVariable メソッド
https://learn.microsoft.com/ja-jp/dotnet/api/system.environment.getenvironmentvariable?WT.mc_id=DT-MVP-32182&view=net-8.0

・string.Replace メソッド
https://learn.microsoft.com/ja-jp/dotnet/api/system.string.replace?WT.mc_id=DT-MVP-32182&view=net-8.0



おまけ

%USERPROFILE%\\box\\aaa\\bbb\\ccc を実際のパスに変換するためのメソッド

・Environment.ExpandEnvironmentVariables メソッド
https://learn.microsoft.com/ja-jp/dotnet/api/system.environment.expandenvironmentvariables?WT.mc_id=DT-MVP-32182&view=net-8.0


編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[2]: ワイルドカードを含んだ置換について /素人 →Re[4]: ワイルドカードを含んだ置換について /素人
 
上記関連ツリー

ワイルドカードを含んだ置換について / 素人 (24/09/23(Mon) 07:06) #103322
Re[1]: ワイルドカードを含んだ置換について / ぶなっぷ (24/09/23(Mon) 10:10) #103323
  └ Re[2]: ワイルドカードを含んだ置換について / 素人 (24/09/23(Mon) 13:02) #103324
    └ ワイルドカードを含んだ置換について / とっちゃん (24/09/23(Mon) 15:35) #103325 ←Now
      └ Re[4]: ワイルドカードを含んだ置換について / 素人 (24/09/23(Mon) 19:39) #103326 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信