在目錄中搜索由引數驅動的特定名稱的檔案時_fileToSearch,我會創建一個自定義串列DrawingFound并將檔案路徑存盤在名為FileDirectory.
然后,我需要單擊按鈕以單擊OpenDrawing()存盤在其中的檔案FileDirectory以向用戶打開。這在大多數情況下都有效,但是,如果路徑具有,例如,則資源管理器默認打開用戶檔案目錄。如何處理檔案路徑中的逗號以達到預期的結果?
public partial class DrawingFound
{
public string DrawingName;
public string FileType;
public string FileDirectory;
public string Revision;
public void OpenDrawing()
{
Process.Start("Explorer.exe", FileDirectory);
}
}
public void GetDrawings()
{
string _searchFolder = @"C:\Users\ThisUser\Documents";
string _fileToSearch = "Example of file, where a comma is used.txt";
ObservableCollection<DrawingFound> _drawings = new();
DirectoryInfo dirInfo = new(_searchFolder);
FileInfo[] files = dirInfo.GetFiles($"*{_fileToSearch}*", SearchOption.AllDirectories);
foreach (FileInfo file in files)
{
if (!_drawings.Any(item => $"{item.DrawingName}{item.FileType}" == file.Name))
{
_drawings.Add(new DrawingFound
{
DrawingName = Path.GetFileNameWithoutExtension(file.Name),
FileType = file.Extension,
FileDirectory = file.FullName,
Revision = "- Ignore -"
});
}
}
}
uj5u.com熱心網友回復:
根據您的作業系統,您可能需要使用“轉義”
例如,要將字串存盤one "two" three在用引號分隔的文字中,您需要對引號進行轉義。根據語言和環境,“轉義字符”可以是例如\
在這個例子中:
foo = "one \"two\" three"
我希望這有幫助; 否則,請更具體地說明您的語言、作業系統等
uj5u.com熱心網友回復:
感謝大家對此事的幫助。我設法解決了這個問題,現在操作按預期作業。@George Rey 按照您的示例添加了轉義字符以實作此目的:
Process.Start("explorer.exe", $"\"{FileDirectory}\"");
uj5u.com熱心網友回復:
完成編輯后,問題更加清晰:
我猜你的作業系統是windows。
問題不在于逗號,而在于空格。
系統將空格前的字符視為“檔案路徑”,其余字符視為“引數”。這是出于歷史原因。
將整個路徑包裝在“嵌入式??引號”中,以便作業系統清楚地知道整個字串是一個路徑。這應該可以防止它嘗試從該字串中洗掉命令引數
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/529764.html
標籤:C#视窗
下一篇:將資料從一個表拆分到另一個表
