当在目录中搜索由_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 -"
});
}
}
}
3条答案
按热度按时间g2ieeal71#
根据您的操作系统,您可能需要使用“转义”
例如,要将字符串
one "two" three
存储在用引号分隔的文本中,您需要对引号进行转义。根据语言和环境的不同,“转义符”可以是\
在这个例子中:
我希望这能有所帮助;否则,请更具体地说明您的语言、操作系统等。
jc3wubiy2#
感谢大家对这件事的帮助。我设法解决了这个问题,现在操作按预期工作。@乔治Rey按照你的例子,我添加了转义字符来实现这一点:
ecfsfe2w3#
编辑完成后,问题就更加明显了:
我猜你的操作系统是windows。
问题不在于逗号,而在于空格。
系统将空格前的字符作为“文件路径”,其余字符作为“参数”,这是历史原因。
用“嵌入式引号”将整个路径括起来,这样操作系统就可以清楚地知道整个字符串是一个路径。这应该可以防止它试图从该字符串中省略命令参数