在if语句中预测传入的句子? C#

时间:2018-03-30 22:19:13

标签: c# voice

我的问题是我试图在字符串之后预测字典中的一个键""中的天气是什么样的。所以你可能已经知道这句话后的内容了。我正在制作带语音识别的天气应用程序。我需要""天气是什么?一个城市来临之后是静止的。例如"哥德堡的天气如何"。在我的词典中,哥德堡是一个公认的城市。

我试过

static Dictionary<string, int> cityList = new Dictionary<string, int>();
if (e.PartialResult.ToString() == string.Format("what is the weather like in {0}", cityList.ContainsKey(e.PartialResult.ToString().Trim("what is the weather like in ".ToArray()))))
{
            string city = e.PartialResult.ToString();
            city = city.Trim("what is the weather like in ".ToArray());
            int cityId = cityList[city]; //here is just city the recognized "city" from the voice recognition
}
然而,如果我说“#34;哥德堡的天气如何&#34;”是什么声明不成立,那么这是行不通的。在if语句结尾处进行的调查只是为了得到&#34;表示&#34;城市独立。如果我不修剪那将是&#34;什么是城市的天气&#34;而不只是&#34; city&#34;。

这是我在尝试时所认识到的,并且#34;南方公园的天气如何&#34;。 &#34;南方公园&#34;在我的字典中,所以我不知道为什么if语句中的代码在被识别时没有被运行。对我好吗?

基本上,if语句可以预测能够预测多个城市。 &#34;哥德堡的天气怎么样?#34; ,&#34;丹麦的天气怎么样?#34;。你说的是,我对城市的认识是,我整理了整个字符串,这样城市就是独立的。在哪里我通过字符串为我的字典搜索一个int值。这样我就可以将该id发送到天气api服务器,并为那个被认可的城市找回适当的响应

我正在使用bing speech api,如果这对解决这个问题有任何不同。

1 个答案:

答案 0 :(得分:0)

这是我在评论中谈论的更可读的例子。

  1. 我们可以做的是首先检查用户是否输入.StartsWith天气查询字符串(以下不区分大小写的方式)。
  2. 如果这是真的,那么我们可以通过在用户输入上调用.Substring()并传入天气查询的长度来获取字符串的城市部分。这将返回字符串的其余部分。
  3. 最后,我们可以将此传递给cityList字典上的.TryGetValue方法,该字典将搜索该字符串的键,如果找到,则将out parameter设置为{{1}与字典中该城市相关联的值。
  4. 另请注意,我们应该使用不区分大小写的比较器初始化我们的字典,以确保我们不会因为大小写而错过密钥。

    例如:

    cityId