2016-07-25 2 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

Итак, что вам мешает? Вы считаете, что кто-то просто напишет вам код? Пожалуйста, прочитайте [ask]. –

+0

Что вы пробовали? – BugFinder

+0

Использование регулярных выражений – Amit

ответ

0

довольно проста:

использовать не захватывая группа, которая ищет, как/что/где и т.д. слова: (?:how|what|when|where|whose)

Тогда любое количество символов, что это не ? или ., а затем либо один : '[^\?\.]*(?:\?|\.).

Prepend его с одним или более пробельных символов, чтобы соответствовать, и вы должны быть хорошо идти:

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

Использование Regex:

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(" ", " "); 

Шаблон регулярного выражения, как следует:

Соответствует строке, начиная с ()или what или т.д.), а затем любой символ и заканчивая ? или .

Второй Replace это опустить лишние пробелы в результате операции ..

Смежные вопросы