2016-05-24 201 views
0

我是C#的新手,並且很難與字符串解析。我有一個這樣的字符串:如何獲得給定字符串後的子字符串

C:\User\Max\Pictures\ 

而且我得到了多個文件路徑:

C:\User\Max\Pictures\car.jpg 
C:\User\Max\Pictures\trains\train.jpg 

我怎樣才能剝去那些文件路徑的基本路徑獲得:

car.jpg 
trains\train.jpg 

東西像這樣失敗:

string path = "C:\\User\\Max\\Pictures\\"; 
string file = "C:\\User\\Max\\Pictures\\trains\\train.jpg"; 

string newfile = file.Substring(file.IndexOf(path)); 
+0

'IndexOf'返回路徑的_starting_位置字符串中,在這種情況下0,這就是爲什麼你需要使用不同的東西;> – garglblarg

回答

4

Yo ü希望長度path後得到的file子串:

string newfile = file.Substring(path.Length); 

注意,它與文件路徑打交道時(雖然這不是好applyable到「列車使用Path方法,如Path.GetFileName()是個好主意「例子)。

+0

這就是我想要的,謝謝。由於列車示例,我無法使用Path類。 – LuMa

+0

IMO的String.SubString比OP的情況下的String.Replace更好。 –

1

對方回答是用一個空字符串替換您的路徑:

string filePath = file.Replace(path, ""); 
0

有特殊的類來處理文件路徑

var filePath = new FileInfo("dd"); 

在filePath.Name是文件的文件名whitout目錄

因此,對於你的情況,你想剝離基地目錄。所以,你可以做到這一點

var filePath = new FileInfo(@"c:\temp\train\test.xml"); 
var dir = filePath.FullName.Replace(@"c:\temp", String.Empty); 
+0

已更新的示例 – lordkain

相關問題