我知道如何
if(speech.Contains("this"))
query = speech.replace("this", "");
但是,如何更换除了一个词之外的所有内容....例如。
如果演讲中包含“什么”“是”我想让它做一个IF声明......但如果我说“你能告诉我什么是狗”
我做了语音替换,是的,它会删除那些,但它仍然使我的演讲包含我说的其他所有内容。
实施例*
if(speech.Contains("What") || (speech.Contains("are")))
{
query = speech.Replace("what are", "");
}
但我如何摆脱我可能会说的其他一切,“你能告诉我”,但仍然保留我在演讲中说的最后一句话,即“狗”
答案 0 :(得分:2)
您只需使用白名单即可解决此问题:
string[] allowedWords = { "what", "are", "dogs" };
var speech = "Can you tell me what are dogs?";
var words = speech.split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
var cleanSpeech = "";
Regex rgx = new Regex("[^a-zA-Z0-9]");
foreach(var word in words)
{
var cleanWord = rgx.Replace(word , "").ToLower();
if(allowedWords.Contains(cleanWord))
cleanSpeech += word + " ";
}
cleanSpeech.Trim();
以小写形式定义所有可接受的单词,因为函数执行ToLower()以避免套管问题,它还会处理标点符号(点,感叹号,逗号,问题等)。