C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
ワイルドカードを含んだ置換について
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
ツリー表示
トピック表示
ランキング
記事検索
過去ログ
[トピック内 5 記事 (1 - 5 表示)] <<
0
>>
■103322
/ inTopicNo.1)
ワイルドカードを含んだ置換について
▼
■
□投稿者/ 素人
(1回)-(2024/09/23(Mon) 07:06:06)
分類:[C#]
c#でワイルドカードを含んだ置換のコーディングについて教えてください。
やりたいことは以下です。
c:\users\*\xxx\bbb\ccc
↓置換
%userprofile%\xxx\aaa\bbb\ccc
文字列の先頭から、以下の*部分をワイルドカードとして、
c:\users\*\xxx\
の場合
%userprofile%\xxx\aaa\
に置換したいです。
引用返信
編集キー/
編集
■103323
/ inTopicNo.2)
Re[1]: ワイルドカードを含んだ置換について
▲
▼
■
□投稿者/ ぶなっぷ
(5回)-(2024/09/23(Mon) 10:10:07)
環境変数 userprofile はユーザ名を含んでいますので、ログオンユーザによって、
実際の値が異なります。
xxxが常に自身のログオンユーザであるなら、
Environment.GetEnvironmentVariable("userprofile")
で得られた値と %userprofile% を置換すればよいですが、
自身のログオンユーザでない場合、どう変換したいのか?
定義から考えないと駄目です。
引用返信
編集キー/
編集
■103324
/ inTopicNo.3)
Re[2]: ワイルドカードを含んだ置換について
▲
▼
■
□投稿者/ 素人
(3回)-(2024/09/23(Mon) 13:02:11)
2024/09/23(Mon) 13:06:52 編集(投稿者)
2024/09/23(Mon) 13:06:33 編集(投稿者)
2024/09/23(Mon) 13:06:25 編集(投稿者)
■
No103323
(ぶなっぷ さん) に返信
> 環境変数 userprofile はユーザ名を含んでいますので、ログオンユーザによって、
> 実際の値が異なります。
>
> xxxが常に自身のログオンユーザであるなら、
> Environment.GetEnvironmentVariable("userprofile")
> で得られた値と %userprofile% を置換すればよいですが、
>
> 自身のログオンユーザでない場合、どう変換したいのか?
> 定義から考えないと駄目です。
>
ご返信ありがとうございます。
質問(実現したいこと)が整理できてませんでした。すみません。
【前提】
ログオンユーザーが例えば、person1、person2といる場合、
ユーザーにより、下記のようにパスが異なります。
c:\users\person1\box\bbb\ccc
c:\users\person2\box\aaa\bbb\ccc
boxのフォルダ名はユーザー共通、位置もユーザー名フォルダ配下でユーザー共通です。
bbb配下もユーザー共通ですが、boxとbbbの間にaaaのように別フォルダが挟まって見えるユーザーがいます。
【実現したいこと】
上記前提のパスの文字列をインプットとして
どちらのユーザーも、
%userprofile%\box\aaa\bbb\ccc
のパスに変換したいです。
@c:\users\ユーザー名 を %userprofile%に変換したい
ログオンユーザーにより異なるユーザー名を*(ワイルドカード)として変換できず困っています。
Abox\bbbがあればbox\aaa\bbb\cccに変換したい
どなたかご教示いただけると助かります。
引用返信
編集キー/
編集
■103325
/ inTopicNo.4)
Re[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
引用返信
編集キー/
編集
■103326
/ inTopicNo.5)
Re[4]: ワイルドカードを含んだ置換について
▲
▼
■
□投稿者/ 素人
(4回)-(2024/09/23(Mon) 19:39:49)
■
No103325
(とっちゃん さん) に返信
ありがとうございました。
期待していた動作を実装できました。
Environment.GetEnvironmentVariable("userprofile")で
得られた文字列と一致する部分をReplaceメソッドで%userprofile%で置換したあと、
%userprofile%\\box\\bbbをReplaceメソッドで
%userprofile%\\box\\aaa\\bbbに置換するようにしました。
本件クローズとさせていただきます。
解決済み
引用返信
編集キー/
編集
このトピックをツリーで一括表示
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
入力内容にタグは利用できません。
他人を中傷する記事は管理者の判断で予告無く削除されます。
半角カナは使用しないでください。文字化けの原因になります。
名前、コメントは必須記入項目です。記入漏れはエラーになります。
入力内容の一部は、次回投稿時の手間を省くためブラウザに記録されます。
URL は自動的にリンクされます。
記事中に No*** のように書くとその記事にリンクされます(No は半角英字/*** は半角数字)。
名前
(*必須)
E-Mail (任意)
Web サイト (任意)
投稿モード
通常モード
図表モード (ソースコードを貼る場合はこちらを使用)
本文
(質問の場合は、開発環境・使用言語のバージョンなどを最初に書いてください)
■No103326 (素人 さん) に返信 > ■No103325 (とっちゃん さん) に返信 > > ありがとうございました。 > 期待していた動作を実装できました。 > > Environment.GetEnvironmentVariable("userprofile")で > 得られた文字列と一致する部分をReplaceメソッドで%userprofile%で置換したあと、 > %userprofile%\\box\\bbbをReplaceメソッドで > %userprofile%\\box\\aaa\\bbbに置換するようにしました。 > > 本件クローズとさせていただきます。
編集キー
自分の投稿を編集する時に必要です
(半角8文字以内)
解決済み
/
解決したらチェックしておきましょう。
プレビュー/
管理者用
-
Child Tree
-