2010-11-05 63 views
5

下面的C#代碼:爲什麼Environment.CommandLine.Trim( '「')不會刪除尾隨引號

using System; 
namespace TrimTest { 
    class Program { 
     static void Main(string[] args) { 
      Console.WriteLine(Environment.CommandLine); 
      Console.WriteLine(Environment.CommandLine.Trim('"')); 
      Console.ReadKey(false); 
     } 
    } 
} 

產生下面的輸出the documentation

在trimChars參數中的所有字符出現後,字符串從開始和結束當前的String對象。如果trimChars爲null或空數組,則會刪除空格字符。

不應該從該輸出中的第二個字符串中刪除尾部雙引號?

回答

4

看起來您可能會遇到最後一個雙引號後面有空白的情況。

嘗試:

Console.WriteLine(Environment.CommandLine.Trim().Trim('"')); 

看看會發生什麼。

你也可以傳遞參數數組過載的額外字符您已經使用:

Console.WriteLine(Environment.CommandLine.Trim('"', ' ')); 

但因爲我不知道有,我更喜歡使用過載什麼樣的空白刪除所有空格而不是猜測哪個字符在那裏。

+2

奇妙的你會認爲寫環境團隊.CommandLine會與在某個時候編寫Path.GetDirectoryName的團隊交談......哦。框架,呃?真好玩。 – 2010-11-05 13:30:39

0

正如賈斯汀所暗示的那樣,尾隨空白是問題所在。試試這個:

Console.WriteLine(Environment.CommandLine.Trim(new[] {'"', ' '})); 
+0

是的 - 就是這樣。順便說一下,當方法調用param char []參數時,你不需要明確地新建一個數組 - 你可以傳遞Trim(''','')。 – 2010-11-05 13:29:59

0

它從一開始和結束消除,但在你的情況ü不能看到有一個白色的空間太=) ion15.vshost.exe」

0

原來有一個在最後的空間:

 Console.WriteLine(Environment.CommandLine); 
     Console.WriteLine(Environment.CommandLine.Trim('"')); 

這一個作品:

 string commandLine = Environment.CommandLine.Trim(new char[] {'"', ' '}); 
     Console.WriteLine(commandLine);