C# 如何创建自然语言计算器

C# 如何创建自然语言计算器,c#,.net,console-application,C#,.net,Console Application,我正在尝试创建一种简单的自然语言。 这就是我想要实现的,如果我输入字符串“五加六”,输出应该是答案:11 下面我尝试创建一个数字枚举,但对于运算符,它不接受字符串,我使用它以便可以分别获取和比较数组输入和covert,您能建议我可以使用什么将运算符存储为单词吗?或者推荐一篇文章 代码: 公共类枚举示例 { 枚举数:int { 零=0, obne=1, 二等于二, 三等于三, 四等于四, 五等于五, 六等于六, 七等于七, 八等于八, 九等于九, }; 枚举运算符 { 添加=“+”, 加上“+”,

我正在尝试创建一种简单的自然语言。 这就是我想要实现的,如果我输入字符串“五加六”,输出应该是答案:11

下面我尝试创建一个数字枚举,但对于运算符,它不接受字符串,我使用它以便可以分别获取和比较数组输入和covert,您能建议我可以使用什么将运算符存储为单词吗?或者推荐一篇文章

代码:

公共类枚举示例
{
枚举数:int
{
零=0,
obne=1,
二等于二,
三等于三,
四等于四,
五等于五,
六等于六,
七等于七,
八等于八,
九等于九,
};
枚举运算符
{
添加=“+”,
加上“+”,
减=“-”,
减法=“-”
};
公共静态void Main()
{
int[]arr=新int[200];
Console.Write(“获取输入”);
对于(int i=0;i<200;i++)
{
Write(“元素-{0}:”,i);
arr[i]=Convert.ToInt32(Console.ReadLine());
}
foreach(Enum.GetValues中的int项(typeof(Numbers)))
{
字符串名称=Enum.GetName(typeof(number),item);
Console.WriteLine(名称+项目);
}
Console.Read();
}
}

我更喜欢使用字典而不是枚举。这里是只针对2值的解决方案,但您可以通过查看此解决方案找出一些问题

public class EnumSample
  {
    private static int Solve(string operation, int first, int second)
    {
      switch (operation)
      {
        case "plus":
        {
          return second + first;
        }
        case "add":
        {
          return second + first;
        }
        default:
          return second-first;
      }
    }
    public static void Main()
    {
      var numbersDic = new Dictionary<string, int>()
      {
        {"zero", 0},
        {"one", 1},
        {"two", 2},
        {"three", 3},
        {"four", 4},
        {"five", 5},
        {"six", 6},
        {"seven", 7},
        {"eight", 8},
        {"nine", 9}
      };
      Console.WriteLine("Get input");
      string[] word = Console.ReadLine()?.Split(' '); // spliting words {"five","plus","six"}
      
      if (word != null) 
        Console.Write(Solve(word[1], numbersDic[word[0]], numbersDic[word[2]]));
      //                plus , 5 , 6
      Console.Read();
    }
  }
公共类枚举示例
{
私有静态int-Solve(字符串操作,int-first,int-second)
{
开关(操作)
{
案例“附加”:
{
返回第二个+第一个;
}
案例“添加”:
{
返回第二个+第一个;
}
违约:
先返回第二个;
}
}
公共静态void Main()
{
var numbersDic=新字典()
{
{“零”,0},
{“一”,1},
{“两个”,2},
{“三”,3},
{“四”,4},
{“五”,5},
{“六”,6},
{“七”,7},
{“八”,8},
{“九”,9}
};
Console.WriteLine(“获取输入”);
string[]word=Console.ReadLine()?.Split(“”);//拆分单词{“五”,“加”,“六”}
if(word!=null)
Console.Write(解算(字[1]、数字dic[字[0]]、数字dic[字[2]]);
//加上,5,6
Console.Read();
}
}
上面已经有问题,说明如何计算数学公式。
public class EnumSample
  {
    private static int Solve(string operation, int first, int second)
    {
      switch (operation)
      {
        case "plus":
        {
          return second + first;
        }
        case "add":
        {
          return second + first;
        }
        default:
          return second-first;
      }
    }
    public static void Main()
    {
      var numbersDic = new Dictionary<string, int>()
      {
        {"zero", 0},
        {"one", 1},
        {"two", 2},
        {"three", 3},
        {"four", 4},
        {"five", 5},
        {"six", 6},
        {"seven", 7},
        {"eight", 8},
        {"nine", 9}
      };
      Console.WriteLine("Get input");
      string[] word = Console.ReadLine()?.Split(' '); // spliting words {"five","plus","six"}
      
      if (word != null) 
        Console.Write(Solve(word[1], numbersDic[word[0]], numbersDic[word[2]]));
      //                plus , 5 , 6
      Console.Read();
    }
  }