C# 从字符串输入获取命令

C# 从字符串输入获取命令,c#,c++,C#,C++,我有一个程序,它以字符串的形式获取命令。字符串中的每个字符表示一个命令。下面给出了一个命令示例 OBIPC 打开一个文件 B-将文本加粗 我-使文本斜体 打印文本 C-关闭文件 我的程序必须解析这个字符串并执行相应的工作。每个命令都按顺序执行。我想出了下面的想法来做这件事 为每个命令创建操作类。每个都有一个Execute()方法,并实现一个可执行的接口。因此,如果我有5个命令,我将有5个类来处理每个命令 保存可在关联容器中执行操作的命令和关联对象(STD::C++中的MAP和.NET中的字典)

我有一个程序,它以字符串的形式获取命令。字符串中的每个字符表示一个命令。下面给出了一个命令示例

OBIPC
打开一个文件

B-将文本加粗

我-使文本斜体

打印文本

C-关闭文件

我的程序必须解析这个字符串并执行相应的工作。每个命令都按顺序执行。我想出了下面的想法来做这件事

  • 为每个命令创建操作类。每个都有一个Execute()方法,并实现一个可执行的接口。因此,如果我有5个命令,我将有5个类来处理每个命令 保存可在关联容器中执行操作的命令和关联对象(STD::C++中的MAP和.NET中的字典)。
  • 循环输入字符串中的每个字符。检查与每个字符关联的任何操作。如果是,则获取action对象并调用Execute()。某种命令设计模式。如果某些字符没有关联的操作,则抛出错误或跳过 这种方法是解决我的问题的最佳方法,还是您认为有任何简单/有效的方法可以做到这一点?这不是特定于任何编程语言的,我对任何编程语言都没有问题。我所要寻找的就是这样做的想法


    有什么想法吗?

    许多脚本语言允许您调用类似eval()的函数,该函数基本上以代码形式运行字符串。这可能是做类似事情最简单的方法。。。也是最不安全的

    许多脚本语言允许您调用类似eval()的函数,该函数基本上以代码形式运行字符串。这可能是做类似事情最简单的方法。。。也是最不安全的

    是的。这正是我要做的,除了使用Runnable::run()而不是IExececutable::Execute()。

    是的。这正是我要做的,除了使用Runnable::run()而不是IExececutable::Execute()。

    每个命令真的需要5个类吗?您可以在.h中创建一个接口,该接口公开一个接受字符串的函数,该函数具有一个参数。在.cpp中,可以有一个从接口继承的类。隐藏在后面的类将负责分析字符串,并在其包含与命令无关的字符时抛出异常(字符的顺序是否重要?)。一旦分析结束,它可以为每个命令调用一个类函数。

    您真的需要为每个命令调用5个类吗?您可以在.h中创建一个接口,该接口公开一个接受字符串的函数,该函数具有一个参数。在.cpp中,可以有一个从接口继承的类。隐藏在后面的类将负责分析字符串,并在其包含与命令无关的字符时抛出异常(字符的顺序是否重要?)。一旦分析结束,它可以为每个命令调用一个类函数