15

誰かがUNCからサーバー名を引き出す方法を教えてもらえますか?

元。

// servername / directory / directory

編集:申し訳ありませんが、間違いを明確にする必要があるようです:パスは実際には次のようになっています:

// servername / d $ / directory

私はこれが物事を少し変えるかもしれないことを知っています

4

5 に答える 5

24

どうですかUri

Uri uri = new Uri(@"\\servername\d$\directory");
string[] segs = uri.Segments;
string s = "http://" + uri.Host + "/" + 
    string.Join("/", segs, 2, segs.Length - 2) + "/";
于 2009-06-27T19:21:53.827 に答える
7

さまざまなオプションを表示するための、もう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.
于 2009-06-27T17:47:59.470 に答える
3

これでうまくいくはずです。

^//([^/]+).*

サーバー名は最初のキャプチャーグループにあります

于 2009-06-27T17:14:10.480 に答える
1

一致する正規表現servername

^//(\w+)
于 2009-06-27T17:17:24.173 に答える
0

醜いですが、それはうまくいきます:

var host = uncPath.Split(new [] {'\\'}, StringSplitOptions.RemoveEmptyEntries).FirstOrDefault();
于 2016-10-06T15:24:22.517 に答える