2015-05-06 108 views
-3

我有本地服務器上的文件,地址爲\\localServerAddress\Folder\Program.exe。我需要動態地刪除服務器地址,並將其替換爲在表單其他地方選擇的另一個服務器地址。服務器名稱可以有不同的長度,因此,我不能使用string.Substring函數。動態更改主機名稱

所以給出的輸入

\\localServerAddress\Folder\Program.exe 

我想結果

\\differentServerAddress\Folder\Program.exe 
+7

所以,你怎麼知道你確實是想要去除,如果它並不總是'\ test'?你的要求很不明確。 –

+0

這是我需要更改的服務器位置。我們有多個具有相同文件結構的服務器。我將需要將文件從一臺服務器移到另一臺服務器,因此刪除了服務器名稱,並將其替換爲新的服務器地址 –

+0

您的示例中有兩個「\\ test」。哪一個應該去? – DrKoch

回答

2

如果你總是使用的UNC

然後

string toRemove = new Uri(yourString).host; 
string newString = yourString.Replace(String.format(@"\\{0})",toRemove) 
            , String.format(@"\\{0})",whateveryouwant)); 
+0

UNC代表什麼? –

+0

通用命名約定 - 在Windows操作系統中,UNC名稱格式爲: \\ servername \ sharename \ path \ filename – Mike

+0

假設它不是UNC,因爲我不真正知道它是否是。 –

1

使用此方法的工作:

string changeServerInPathString(string originalString, string newServer) 
    { 
     List<string> stringParts = originalString.TrimStart('\\').Split('\\').ToList(); 
     stringParts.RemoveAt(0); 
     stringParts.Insert(0, newServer); 
     return string.Join("\\", stringParts.ToArray()).Insert(0, "\\\\"); 
    } 
+0

無法從'System.Collections.Generic轉換。列表'到'字符串[]' –

+0

糟糕 - 修正了錯誤。現在就試試。 – Pittmyster

+0

這很好,除了它不會添加文件夾名稱和以後。 示例:localServer \ FolderName \ Test.program將被移動到NYCServer \ SameFolderName \ Test.program。 唯一需要做的是剝離服務器名稱,但保留其餘的信息 –

-1
string text = @"\\test\FolderName\foo.exe"; 
    text = text.Replace('\\', '-'); \\ this is done as I was not able to make the regex **\\\\\\(.)*?\\** , work. 
    Regex rg = new Regex("--.*?-"); \\ if in case the above mentioned regex is made to work correctly please replace the regex with the same. 
    text = rg.Replace(text, ""); 
    Console.WriteLine(text.Replace('-', '\\')); 

    Console.Read(); 
0

您可以使用這樣的事情:

void Main() 
{ 
    string path = @"\\localServerAddress\Folder\Program.exe"; 

    UriBuilder bld = new UriBuilder(path); 
    bld.Host = "NewServer"; 
    Console.WriteLine(bld.Uri.LocalPath); 
} 

結果:\\newserver\Folder\Program.exe