2016-07-25 174 views
-3

我想從字符串中移除包含問題的所有子字符串。
例如,
原始字符串: 你好你好嗎?你在做什麼?這件事情是完美的。
結果:你好這件事是完美的。
我想刪除所有的子串,從什麼,何時,何處,誰,如何,等等開始和結束是否?(問號)。(點)從包含問題的字符串中移除子字符串

Regex questions = new Regex("what|why|when|How|where|who|which|whose|whom"); 
string propertyValue = "Hello How are you? what are you doing? this thing is perfect."; 
if (questions.IsMatch(propertyValue)) 
     { 
      int index1 = propertyValue.IndexOf("what"); 
      int index2 = propertyValue.IndexOf('?'); 
      int count = index2 - index1; 
      propertyValue = propertyValue.Remove(index1,count+1); 

     } 

我試過這個,但我不明白如何獲得多個值的索引,因爲我有一個問題單詞列表。

+1

那麼,是什麼阻止你?你認爲有人會爲你寫代碼嗎?請閱讀[問]。 –

+0

你試過了什麼? – BugFinder

+0

使用正則表達式 – Amit

回答

0

相當簡單:

使用非捕獲組,看起來如何/什麼/在哪裏等等的話:(?:how|what|when|where|whose)

那麼任何數目的字符,這不是一個?.,其次是一方:'[^\?\.]*(?:\?|\.)

前面加上它有一個或多個空格字符匹配,你應該是好去:

string input = "Hello How are you? what are you doing? this thing is perfect. "; 
string pattern = @"\s+(?:how|what|when|where|whose)[^\?\.]*(?:\?|\.)"; 
string result = Regex.Replace(input, pattern, "", RegexOptions.IgnoreCase); 
Console.WriteLine(result); 

輸出Hello this thing is perfect.

0

使用正則表達式:

String str = "Hello How are you? what are you doing? this thing is perfect."; 

Regex rgx = new Regex(@"(How|What|When|Where)(.*?)(\?|\.)", RegexOptions.IgnoreCase); 
str = rgx.Replace(str, "").Replace(" ", " "); 

的正則表達式模式是如下:

匹配以(howwhat或等),其次是任何字符,並與?.

結束第二Replace是省略從操作所造成的多餘的空格..