2014-12-23 13 views
-4

我知道如何如何Speech.Remove一切,但一个关键的词

if(speech.Contains("this")) 
query = speech.replace("this", ""); 

但我怎么取代一切,只有一个词....为例。

如果语音中包含“什么”,“是”我想要它做一个IF语句......但如果我说“你能告诉我什么是狗”

和我做演讲替换,是的,它将删除那些但它仍然使我的讲话包含我说的一切。

示例*

if(speech.Contains("What") || (speech.Contains("are"))) 
{ 

query = speech.Replace("what are", ""); 

} 

但我怎么摆脱一切我可能会说这样的“你能告诉我”,但仍保持过去的话,我在我的演讲中说,这是“狗”

+5

您需要提供一个更一般的案例,在您的问题读为“我如何替换包含单词狗的字符串,只有单词狗”的时刻。你可以用'var someString =“dogs”;' –

+0

你可以做什么?你不需要'if'检查,因为如果找不到字,replace会返回原始字符串'如果在当前实例中找不到oldValue,返回当前实例不变。 ' – SwDevMan81

+1

我认为你需要重新命名你的标题为'替换除字符串以外的所有字符串'。 – zulq

回答

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将(),以避免外壳的问题,这也需要照顾的标点符号(点,感叹号,逗号,问题等)。

相关问题