我的问题是我试图在字符串之后预测字典中的一个键""中的天气是什么样的。所以你可能已经知道这句话后的内容了。我正在制作带语音识别的天气应用程序。我需要""天气是什么?一个城市来临之后是静止的。例如"哥德堡的天气如何"。在我的词典中,哥德堡是一个公认的城市。
我试过
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,如果这对解决这个问题有任何不同。
答案 0 :(得分:0)
这是我在评论中谈论的更可读的例子。
.StartsWith
天气查询字符串(以下不区分大小写的方式)。 .Substring()
并传入天气查询的长度来获取字符串的城市部分。这将返回字符串的其余部分。 cityList
字典上的.TryGetValue
方法,该字典将搜索该字符串的键,如果找到,则将out
parameter设置为{{1}与字典中该城市相关联的值。另请注意,我们应该使用不区分大小写的比较器初始化我们的字典,以确保我们不会因为大小写而错过密钥。
例如:
cityId