Escaping command line arguments in C# for Urls and Local and Network Paths
如何提供自动转义到控制台应用程序的输入字符串?
我是说在我的代码里,我可以
1 2 3 4 5 6 | public static void main(string[] args) { string myURL; myFolder = @"C:\temp\january"; //just for testing myFolder = args[0]; // I want to do this eventually } |
如何在不必通过命令行手动转义的情况下为我的文件夹提供值?
如果可能,我希望避免这样调用此应用程序:
1 | C:\test> myapplication.exe"C:\\temp\\january\" |
编辑:相反,如果可能的话,我更喜欢像这样调用应用程序
1 | C:\test> myapplication.exe @"C:\temp\january" |
谢谢您。
编辑:
这实际上是用于调用SharePointWeb服务的控制台应用程序。我试过
1 2 3 4 5 6 7 8 9 10 11 12 13 | string SourceFileFullPath, SourceFileName, DestinationFolder, DestinationFullPath; //This part didn't work. Got Microsoft.SharePoint.SoapServer.SoapServerException //SourceFileFullPath = args[0]; // C:\temp\xyz.pdf //SourceFileName = args[1]; // xyz.pdf //DestinationFolder = args[2]; //"http://myserver/ClientX/Performance" Reports //This worked. SourceFileFullPath = @"C:\temp\TestDoc2.txt"; SourceFileName = @"TestDoc2.txt"; DestinationFolder = @"http://myserver/ClientX/Performance Reports"; DestinationFullPath = string.Format("{0}/{1}", DestinationFolder, SourceFileName); |
如果字符串不是逐字字符串(以
编辑:我原来的帖子上面有
请注意,在C中引号之间的任何内容都是字符串的表示;实际字符串可能不同-例如,
"前缀"@"允许使用关键字作为标识符,这在与其他编程语言交互时很有用。字符@实际上不是标识符的一部分,因此在其他语言中,标识符可能被视为没有前缀的普通标识符。带有@前缀的标识符称为逐字标识符。对于不是关键字的标识符,允许使用@prefix,但在样式方面,强烈建议不要使用。"
EX:
1 2 | string @int ="senthil kumar"; string @class ="MCA"; |
2.使用文件路径时,在字符串之前
1 | string filepath = @"D:\SENTHIL-DATA\myprofile.txt"; |
而不是
1 | string filepath ="D:\\SENTHIL-DATA\\myprofile.txt"; |
对于多行文本
string threeidiots=@"Senthil Kumar,诺顿斯坦利还有Pavan Rao!";
1 | MessageBox.Show(ThreeIdiots); |
而不是
1 2 | string ThreeIdiots = @"Senthil Kumar, Norton Stanley,and Pavan Rao!"; |