2016-09-06 122 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"

在你的情況下,逐字字符串文字是@"",它已經等價於其他空字符串文字""@在那裏沒有效果。

逐字字符串解析也隻影響某些字符,這些字符必須在正常字符串文字內轉義。對於這些角色,他們從字面上解釋,所以你不需要逃避他們。

但是,對於空格不起作用,所以你不需要首先使用逐字字符串文字。只要你將路徑作爲單個字符串傳遞,它應該可以正常工作。

相關問題