1

作成しているコンソールアプリケーションのスペースでユーザー入力を分割する必要がありますが、その方法がよくわかりません。文字列などが引用されているので、やみくもに分割することはできません。これを行う簡単な方法は何ですか?

または、Windowsのコマンドラインパーサーにアクセスして、それを使用して分割する方法はありますか?

4

5 に答える 5

3

Visual Studioで新しいコンソールアプリケーションを作成すると、次のようになります。

class Program
{
    static void Main(string[] args)
    {
    }
}

アプリケーションに渡されるコマンドライン引数は、「args」パラメーターに含まれます。

于 2012-07-16T17:52:48.010 に答える
1

コンソール アプリケーションでのユーザー入力は、単純にConsole.ReadLine()です。

次のようなことを試してみてください。

static void Main(string[] args)
{
    Console.WriteLine("Input please:");
    string input = Console.ReadLine();
    // Parse input with Regex (This splits based on spaces, but ignores quotes)
    Regex regex = new Regex(@"\w+|""[\w\s]*""");
}
于 2012-07-16T18:14:54.517 に答える
0

入力を文字列として読み取るには、次を使用します。

string stringInput = Console.ReadLine();
于 2012-07-16T18:15:35.123 に答える
0

さて、あなたはあなた自身の「トランスデューサー」を作らなければなりません。基本的に、メインでは、switchステートメントとConsole.ReadLine(). ユーザーが実行可能ファイルを実行すると、次のようなものを出力Enter Command:して、ユーザーの入力を待つことができます。次に、ユーザーの入力をキャプチャしてオンにします。

class Program
{
    static void Main(string[] args)
    {       
        string cmd = Console.ReadLine();
        switch(cmd)
        {
            case "DoStuff":
                someClass.DoStuff();
                break;
            case "DoThis":
                otherClass.DoThis();
                break;
        }       
    }
}

また、ユーザーからの入力コマンドを引き続き受け取りたい場合は、そのようなものを while ループでラップし、ユーザーがQuitループから抜け出してプログラムを終了したい場合に使用します。

于 2012-07-16T18:19:46.333 に答える
0

この回答のおかげで、私はついにそれを手に入れました。これは引用符をチェックしますが、ネストされた引用符については心配しません。その回答へのコメントによると、それが2つの引用符であるかネストされた引用符であるかをどのように知るのでしょうか。文字列はスペースで開始または終了する可能性があるため、実際にはスペースを使用することはできません。

using System.Text.RegularExpressions;
...
Console.Write("Home>");
string command = Console.ReadLine();
Regex argReg = new Regex(@"\w+|""[\w\s]*""");
string[] cmds = new string[argReg.Matches(command).Count];
int i = 0;
foreach (var enumer in argReg.Matches(command))
{
    cmds[i] = (string)enumer.ToString();
    i++;
}
于 2012-07-16T20:25:50.190 に答える