C# 在";处解析:"E;”甚至不知道该怎么问。。这是我的前任

C# 在";处解析:"E;”甚至不知道该怎么问。。这是我的前任,c#,parsing,richtextbox,C#,Parsing,Richtextbox,我有一段代码,我想用它来解析:“很难解释,很难搜索,所以决定在这里问我的第一个问题 if (command == "hi") { MessageBox.Show(command); skype.SendMessage(msg.Sender.Handle, nick + " Says: " + "what"); } else { } if (command == "what's up?") { MessageBox.Show(command); skype.Send

我有一段代码,我想用它来解析:“很难解释,很难搜索,所以决定在这里问我的第一个问题

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");
    }
相反,我想要一个richtextbox在“:”处解析它 并使每一行都成为一个新的if语句


谢谢大家!

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

var originalString = "command:some other stuff";
var parts = originalString.Split(new[] {':'});
var command = parts[0];

我真的不确定你在要求什么,但我的假设是你想得到一个命令,并知道如何响应该命令

一种简单的方法是使用
词典

字典命令和响应=新建字典();
命令和响应。添加(“嗨”,“什么”);
//加上其余的
if(commandsandsresponses.ContainsKey(command))
{
MessageBox.Show(命令);
skype.SendMessage(msg.Sender.Handle,nick+)上写着:“+commandsandsresponses[command]);
}
更新


如果您从RichTextBox中获取命令和响应,并将其作为“:”分隔的字符串列表,则可以使用
string.Split()
来构建字典。

看起来您并不是真的想要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]);
    }
}

这将在文本框中的每一行上循环,然后处理命令的两个部分(如果只有一个“:”。我将把是否允许用户在文本中使用“:”留给您。这是一个表达得非常糟糕的问题。你觉得你可以花几分钟来整理你想要的东西吗?@Boo我已经读了好几遍了。我不知道我是否明白你的要求。您希望用户在文本框中输入多行文本,每行的格式为
问题:回答
,然后代码应该读取这些行,并为每一行执行一个
if
语句,如您示例中的语句?小错误,我想我知道原因。。因为我没有太多空间发布,这里有一个我的评论@TomDoobies的pastebin链接,具体是什么导致了你的问题?我看不到任何迹象表明你在粘贴上遇到了问题。看,它需要这样做:消息|回复你好:嘿,伙计,它只是一次发送两条消息,不管说什么。@TomDoobies,你可以将这种方法与之结合,它将给你想要的东西。另外,我没有为你写逻辑,我只是写了什么会给你结果。如果您有单独的要求,那么您必须修改示例以满足这些要求。如果您有Skype,那就太棒了。
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]);
    }
}