-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 { }

现在我想要上面的内容是让richtextbox一次排序一行,所以对于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

我并不完全清楚你在问什么,但如果我理解正确,你有一个看起来像的字符串,"command:some other stuff"你想将这两个部分分开。如果我的理解是正确的,这很容易:

var originalString = "command:some other stuff";
var parts = originalString.Split(new[] {':'});
var command = parts[0];
于 2012-04-04T21:17:46.210 回答
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]);
    }
}

这将遍历文本框中的每一行,然后处理命令的两个部分,如果它只有一个“:”。我将由您决定是否允许用户在文本中使用“:”。

于 2012-04-04T21:21:52.283 回答