2016-12-14 50 views
4

如何刪除多餘的反斜槓 「」 從字符串文件路徑在C#

String path = "C:\Abc\Omg\Why\Me\\\\\\\\\\\\\\\\\\\\\"

轉換成

String path = "C:\Abc\Omg\Why\Me\"

我的做法是先reversestring然後刪除所有"\",直到我們得到第一charreverse一遍。

如何在C#中做到這一點,是有這樣的操作的任何方法?

+2

我想你'字符串路徑= @「C:\美國廣播公司\ OMG \爲什麼\我\\\\\\\\\ \\\\\\\\\\\\「;' –

回答

17

您可以使用Path靜態類只是構建路徑:

string path = Path.GetFullPath(@"C:\Abc\Omg\Why\Me\\\\\\\\\\\\\\\\\\\\\"); 

此操作後,變量path將包含最低版本:

C:\Abc\Omg\Why\Me\ 
+1

謝謝@Zoran人應該只使用這個路徑。 –

8

您可以使用path.TrimEnd('\\')。查看String.TrimEnd的文檔。

如果你想在結尾的斜線,你可以將其添加回輕鬆。

+3

你不應該把文件路徑爲簡單的字符串。您應該依賴.NET Framework對文件路徑的支持,因爲它知道它更好。例如,誰說分段分隔符是反斜槓?這是系統設置。 –

+1

@ZoranHorvat適用於某些簡單的情況下,這個工程。 –

+0

使用'Path'類同樣簡單。 –

3
var path = @"C:\Abc\Omg\Why\Me\\\\\\\\\\\\\\\\\\\\\"; 
path = path.TrimEnd('\\') + '\\'; 

另一種解決方案是

var path = @"C:\Abc\Omg\Why\Me\\\\\\\\\\\\\\\\\\\\\"; 
path = Path.GetFullPath(path); 
+2

無需操縱字符串。 .NET Framework已經對文件路徑有廣泛的支持。 –

+1

同意。在這種情況下,您的解決方案更加優雅。但是,如果Pranay想要刪除另一個字符串中的另一個字符呢? –

+2

當它到達路徑時並不那麼簡單。例如,'Path'類定義了路徑分隔符。當我們將這些代碼編譯成一個UWP應用程序,然後每隔一段時間接收一個正斜槓而不是反斜槓時,會發生什麼?更好地堅持強壯的類型,讓框架和操作系統儘自己的一份力量。 –

0

您還可以使用正則表達式如下刪除多個斜線:

string path= @"C:\Abc\Omg\Why\Me\\\\\\\\\\\\\\\\\\\\\"; 
path = Regex.Replace(path, "\\\\{2,}", @"\");