0
因此,我正在使用C#中的WinSCP庫製作文件瀏覽器。來自遠程服務器的文件和文件夾被加載到一個ListView中,並且我在ListView_DoubleClick事件上有一個事件將會去獲取該文件夾的文件。但是我的問題是,從WinSCP返回的「CurrentPath」就像這樣構建; 「/ eddata/T」。現在,如果用戶返回一個目錄,返回的路徑是「/eddata/T/../」。如果用戶進入另一個名爲「Bob」的文件夾,則路徑現在看起來像; 「/eddata/T/../Bob」。在C#中格式化Linux路徑#
我想要一種方式,以便以用戶友好的方式顯示當前路徑。所以當用戶在目錄中時, 「/ eddata/T /」,他們上了一個級別,一個標籤應該告訴他們他們在; 「/ eddata /」;
這是我的嘗試,但未按預期工作,它不處理用戶同時備份兩個目錄的事件;
private string FormatPathString(string input)
{
String working = input;
bool replacement = true;
while (replacement)
{
string[] splits = working.Split('/');
splits = splits.AsEnumerable().Where(x => x != String.Empty).ToArray();
int? found_index = null;
for (int i = splits.Count() - 1; i > 0; i--)
{
if (splits[i] == "..")
{
found_index = i;
break;
}
}
if (found_index.HasValue)
{
replacement = true;
splits = splits.Where((val, idx) => (idx != found_index) && (idx != found_index - 1)).ToArray();
working = String.Join("/", splits);
}
else
{
replacement = false;
}
}
return working;
}
完美!謝謝! – Sam