我制作了一个基本的语音识别器程序,它可以正常工作,但是我被我现在想做的事情困住了。我正在尝试进行经典的数学加法运算等。但是,它用“字符串”加载了语法。我该怎么办?
答案 0 :(得分:0)
如果我理解您的问题,您已经将声音转换为C#的字符串格式。因此,您只需要创建一个将大小写转换为int格式的switch case函数即可。像这样:
public int textToNumber(text){
int number = 0;
switch(text)
{
case "one":
number = 1;
break;
case "two":
number = 2;
break;
case "three":
number = 3;
break;
.
.
.
}
}
您可以对这些操作执行相同的操作。让我知道这对您是否有意义。
答案 1 :(得分:0)
您将需要创建一些字符串解析算法,以查找特定的字符串并进行处理。 (如果您在问我想在问什么)
这不是特别漂亮,但是它将为单个字符串完成一个数学问题完成工作:
class Program
{
public decimal MathMachine(string input)
{
int indexOfFirstNumber = 0;
int indexOfOperator = 0;
int indexOfLastNumber = 0;
string firstSet;
string secondSet;
string operatorCharacter;
char[] c = input.ToCharArray();
for (int i = 0; i < input.Length; i++)
{
if (char.IsNumber(c[i]))
{
indexOfFirstNumber = i;
break;
}
}
for (int i = 0; i < input.Length; i++)
{
if(c[i] == '+' || c[i] == '-' || c[i] == '/' || c[i] == '*')
{
indexOfOperator = i;
break;
}
}
for (int i = indexOfOperator +1; i < input.Length; i++)
{
if (!char.IsNumber(c[i]))
{
indexOfLastNumber = i;
break;
}
}
firstSet = input.Substring(indexOfFirstNumber, indexOfOperator - indexOfFirstNumber);
secondSet = input.Substring(indexOfOperator+1, indexOfLastNumber - indexOfOperator-1);
operatorCharacter = input[indexOfOperator].ToString();
if(operatorCharacter == "+")
return (decimal.Parse(firstSet) + decimal.Parse(secondSet));
if(operatorCharacter == "*")
return (decimal.Parse(firstSet) * decimal.Parse(secondSet));
if(operatorCharacter == "/")
return (decimal.Parse(firstSet) / decimal.Parse(secondSet));
if(operatorCharacter == "-")
return (decimal.Parse(firstSet) - decimal.Parse(secondSet));
return 0;
}
static void Main(string[] args)
{
Program program = new Program();
Console.WriteLine(program.MathMachine("What is 3*4?"));
Console.ReadLine();
}
我还应该警告您,此示例中没有检查,因此,如果字符串格式不同或缺少数字或运算符等,则会出错。