我的控制台应用程序中有空格问题。我的应用程序崩溃是因为不允许使用chararcters。
我的应用程序期望一个参数是文件系统的路径。所以它会像这样被调用
myProg.exe "D:\tmp\with whitespace\"
有了这些信息,我想在给定的文件夹中创建一个文件,但由于不允许使用char,这是不可能的。
String pdfName = "foobar.pdf
String datapath = args[0];
String targetJobFile = datapath + pdfName + ".txt";
我可以在调试器中看到targetJobFile值是
"D:\tmp\with whitespace\"foobar.pdf.txt
我收到了例外。 谢谢
答案 0 :(得分:1)
您需要从参数中删除引号,因此在使用之前,请使用Trim
:
String realArg = args[0].Trim('"');
您已拥有\
会给您的Path.Combine
;但如果您不希望用户必须输入它,则使用Path.Combine
是将路径分隔符添加到字符串中的好方法。
答案 1 :(得分:0)
为什么不检查是否存在"
字符并在制作完整路径之前替换它们
datapath = datapath.Replace("\"","");
String targetJobFile = datapath + pdfName;
答案 2 :(得分:0)
您可以前进一步并使用Path.GetInvalidPathChars(),它将返回路径名中不允许的所有无效字符,并将其从路径中删除,如下所示 -
modifiedPathName = new Regex(string.Format(“[{0}]”,Regex.Escape(new string(Path.GetInvalidPathChars()))))。Replace(PathName,replaceChar);