2016-06-09 32 views
0

我有一個函數,我需要去掉文件路徑中的前導斜線和尾部斜線以獲取服務器名稱。該路徑不一定總是具有前導斜線。Regex.Replace並匹配

這是我在我們的應用程序的其他部分中找到:

public static string ResolveToIP(string path) { 
    return Regex.Replace(path, @"^\\\\(.*?)\\(.*)$", 
     delegate(Match M) { 
     try { 
      IPAddress[] addresses = System.Net.Dns.GetHostAddresses(M.Groups[1].Value); 
return "\\\\" + addresses[0].ToString() + "\\" + M.Groups[2].Value; 
      } 
     catch { 
       return path; 
       } 
      }); 
     } 

所以在"////serverName/user7$/GTOUser"的情況下,M.Groups[1]將返回"serverName",這正是我需要的。我有一個子字符串函數,也將工作,但我想知道是否有一個簡單的方法來使用相同的正則表達式已經存在但沒有替換。

+2

也許我誤解你的問題,但是這有什麼錯['String.Trim'](https://msdn.microsoft.com/ EN-US /庫/ d4tt83f9(v = vs.110)的.aspx)? – Nasreddine

回答

2

我想通了,比我想象的要簡單得多:

string pattern = @"^\\\\(.*?)\\(.*)$"; 
Regex r = new Regex(pattern, RegexOptions.IgnoreCase); 
Match m = r.Match(AS.SourcePath); 
string server = m.Groups[1].Value;