-4

「:」で解析したいこのコードがあります。説明するのが難しいため、検索するのが難しいため、ここで最初の質問をすることにしました

if (command == "hi")
{
    MessageBox.Show(command);
    skype.SendMessage(msg.Sender.Handle, nick + " Says: " + "what");
}
else { }
if (command == "what's up?")
{
    MessageBox.Show(command);
    skype.SendMessage(msg.Sender.Handle, nick + " Says: " + "nothing much");
}
else { }

上記で私が望むのは、リッチテキストボックスで一度に1行ずつソートすることです。EXの場合:

hi:what  
what's up?:nothing much

また、ユーザーを特定の量に制限するのではなく、新しい if ステートメントを作成するすべての行を広告にすることは可能ですか?

編集:このように動作する必要があります-
メッセージ | 応答
こんにちは: 調子はどうですか?

現在のコードの仕組みは次のとおりです。

//if message "hi" 
    if (command == "hi")
    {
        //return this message if message "hi"
        skype.SendMessage(msg.Sender.Handle, nick + " Says: " + "what");
    }

代わりに、「:」で解析し、各行を新しい if ステートメントにするリッチテキスト ボックスが必要です。

ありがとう!

4

3 に答える 3

4

あなたが何を求めているのかはよくわかりませんが、コマンドを取得して、そのコマンドに応答する方法を知りたいと思っていると思います。

これを行う簡単な方法は、Dictionary<string, string>.

Dictionary<string, string> commandsAndResponses = new Dictionary<string, string>();
commandsAndResponses.Add("hi", "what");
// Add the rest

if (commandsAndResponses.ContainsKey(command))
{
    MessageBox.Show(command);
    skype.SendMessage(msg.Sender.Handle, nick + " Says: " +  commandsAndResponses[command]);
}

アップデート

RichTextBox からコマンドと応答を「:」で区切られた文字列のリストとして取得する場合は、 を使用string.Split()して辞書を作成できます。

于 2012-04-04T21:18:35.967 に答える
0

if ステートメントが本当に必要なようには見えません。次のようなことができます。

string[] lines = richTextBox1.Text.Split('\n'); // split on line
foreach(string ln in lines)
{
    string[] commands = ln.Split(':');
    if(commands.Length == 2) 
    {
        // first statement 
        skype.SendMessage(msg.Sender.Handle, string.Format("{0} Says: {1}",nick, command[0]); 
        // second statement
        skype.SendMessage(msg.Sender.Handle, string.Format("{0} Says: {1}",nick, command[1]);
    }
}

これは、テキストボックスの各行をループし、「:」が 1 つしかない場合、コマンドの両方の部分で機能します。ユーザーがテキストで「:」を使用できるようにするかどうかは、あなたにお任せします。

于 2012-04-04T21:21:52.283 に答える
0

あなたが何を求めているのかは完全にはわかりませんが、私があなたを正しく理解していれば、次のような文字列があり"command:some other stuff"、2 つの部分を分離したいと考えています。私の理解が正しければ、それは非常に簡単です:

var originalString = "command:some other stuff";
var parts = originalString.Split(new[] {':'});
var command = parts[0];
于 2012-04-04T21:17:46.210 に答える