0

コンソール アプリケーションへの自動エスケープを使用して入力文字列を提供するにはどうすればよいですか?

つまり、コード内でできることです

public static void main(string[] args)
{
     string myURL; 
     myFolder = @"C:\temp\january\";  //just for testing
     myFolder = args[0]; // I want to do this eventually
}

コマンドラインから手動でエスケープせずに myFolder に値を提供するにはどうすればよいですか?

可能であれば、このアプリを次のように呼び出すことは避けたいです。

C:\test> myapplication.exe "C:\\temp\\january\\" 

編集:代わりに、可能であればこのようにアプリを呼び出すことをお勧めします

    C:\test> myapplication.exe @"C:\temp\january\" 

ありがとうございました。

編集:

これは実際には、Sharepoint Web サービスを呼び出すコンソール アプリケーション用です。私は試した

  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); 
4

2 に答える 2

3

\文字列がそのままの文字列 ( で始まる文字列) でない場合に文字列内をエスケープする必要@があるのは、C# の機能です。コンソールからアプリケーションを起動すると、C# の外部にいて、コンソールは\特殊文字とは見なされないため、機能しC:\test> myapplication.exe "C:\temp\january"ます。

編集:私の元の投稿は"C:\temp\january\"上にありました。ただし、Windows コマンド ラインは\エスケープ文字としても処理されるようですが、 の前にある場合のみである"ため、そのコマンドはアプリケーションに渡さC:\temp\january"れます。これを指摘してくれた@zimdanenに感謝します。

C# で引用符の間に入れるものはすべて、文字列の表現であることに注意してください。実際の文字列は異なる場合があります。たとえば、は単一のを\\ 表し\ます。コマンド ライン引数やファイルからの読み取りなど、他の手段を使用して文字列をプログラムに取り込む場合、文字列は文字列リテラルに関する C# の規則に従う必要はありません。コマンド ラインには、 a\自体を表すさまざまな表現規則があります。

于 2013-04-10T17:19:26.490 に答える
0

「接頭辞「@」を使用すると、キーワードを識別子として使用できます。これは、他のプログラミング言語とやり取りするときに役立ちます。文字 @ は実際には識別子の一部ではないため、識別子は他の言語では接頭辞なしの通常の識別子として表示される場合があります。@ 接頭辞が付いた識別子は逐語的識別子と呼ばれます。キーワードではない識別子に @ プレフィックスを使用することは許可されていますが、スタイルの問題として強くお勧めしません。」</p>

  1. @ 記号で c# の予約語の 1 つを使用できます。

元:-

  string @int = "senthil kumar";
    string @class ="MCA";

2.ファイルパスを使用する場合、特に文字列の前

string filepath = @"D:\SENTHIL-DATA\myprofile.txt";

それ以外の

string filepath = "D:\\SENTHIL-DATA\\myprofile.txt";
  1. 複数行テキストの場合

    string ThreeIdiots = @"Senthil Kumar、Norton Stanley、および Pavan Rao!";

    MessageBox.Show(ThreeIdiots);
    

それ以外の

string ThreeIdiots = @"Senthil Kumar,\n   Norton Stanley,and Pavan Rao!";
于 2013-04-10T17:19:16.640 に答える