2016-09-06 123 views
0

在控制台应用程序中传递几个参数。其中之一是文件路径。这工作正常,除非路径包含空格。在文件名中有空格的解决方法是之前有一个@符号,如@"folder f/file.exe" 如何将@符号添加到args[4]参数中,如此类似?在C#中的字符串之前添加@符号

boot = new Main(args[2], args[3], args[4], (args.Length == 5) ? "" : args[5], args[args.Length - 1].Equals("-r")); 

我曾尝试以下,但它并没有为我工作。

boot = new Main(args[2], args[3], @"" + args[4], (args.Length == 5) ? "" : args[5], args[args.Length - 1].Equals("-r")); 

回答

1

如果你在运行时使用经过agrument引述为 “关闭” 其值的范围内:

C:\your_console_application "arg_1_value" "arg 2 value"

这将是内appliaction exctracted为:

ARGS [0] - > arg_1_value

ARGS [1] - > ARG 2值

+0

这是个问题,我现在试图从另一个应用程序调用时得到这个结果。休息后我会做什么brb。 –

+0

这是解决方案,应该碰到顶端。 –

+0

您可以将其标记为已接受 –

1

这不是你需要改变的说法,但是字符串你给它:

private void myMethod(string input){ 

} 
myMethod(@"hello"); 
+0

http://i.imgur.com/tS04lZ8.png给出了这样的错误http://i.imgur.com/P2wZhvh.png –

+0

@MartinMeli“@”是C#语法功能,而不是shell语法功能。在那里放下'@'。 – poke

+0

我是,但是之后空格字符被认为是一个新的字符串,是壳。我会用双引号将它传递 –

0

在字符串前面的@符号只是语法功能,改变了字符串文字是如何解释。它只影响它所预置的实际文字,使其成为逐字字符串文字。它只会影响如何解析字符串文字,但不会对正在创建的字符串对象产生进一步的影响。每个逐字字符串文字都有一个等效的非逐字字符串文字,它将创建相同的字符串对象。例如,逐字字符串文字@"\xy"等价于字符串文字"\\xy"

在你的情况下,逐字字符串文字是@"",它已经等价于其他空字符串文字""@在那里没有效果。

逐字字符串解析也只影响某些字符,这些字符必须在正常字符串文字内转义。对于这些角色,他们从字面上解释,所以你不需要逃避他们。

但是,对于空格不起作用,所以你不需要首先使用逐字字符串文字。只要你将路径作为单个字符串传递,它应该可以正常工作。

相关问题