誰かがUNCからサーバー名を引き出す方法を教えてもらえますか?
元。
// servername / directory / directory
編集:申し訳ありませんが、間違いを明確にする必要があるようです:パスは実際には次のようになっています:
// servername / d $ / directory
私はこれが物事を少し変えるかもしれないことを知っています
どうですかUri
:
Uri uri = new Uri(@"\\servername\d$\directory");
string[] segs = uri.Segments;
string s = "http://" + uri.Host + "/" +
string.Join("/", segs, 2, segs.Length - 2) + "/";
さまざまなオプションを表示するための、もう1つのオプション:
(?<=^//)[^/]++
サーバー名は、サーバーの呼び出し方法と言語が提供するものに応じて、関数内\0
または$0
関数の結果になります。
正規表現コメントモードでの説明:
(?x) # flag to enable regex comments
(?<= # begin positive lookbehind
^ # start of line
// # literal forwardslashes (may need escaping as \/\/ in some languages)
) # end positive lookbehind
[^/]++ # match any non-/ and keep matching possessively until a / or end of string found.
# not sure .NET supports the possessive quantifier (++) - a greedy (+) is good enough here.
これでうまくいくはずです。
^//([^/]+).*
サーバー名は最初のキャプチャーグループにあります
一致する正規表現servername
:
^//(\w+)
醜いですが、それはうまくいきます:
var host = uncPath.Split(new [] {'\\'}, StringSplitOptions.RemoveEmptyEntries).FirstOrDefault();