2016-07-25 9 views
-3

ich alle Sub-Zeichenfolge enthält eine Frage von Zeichenfolge entfernen möchten enthält.
Zum Beispiel
die ursprüngliche Zeichenfolge: Hallo Wie geht es Ihnen? Was machst du gerade? dieses Ding ist perfekt.
Ergebnis: Hallo dieses Ding ist perfekt.
Ich möchte alle Teilketten entfernen, die von Was-wäre-wenn-where-dessen-how-etc und endet mit, ob ? (Fragezeichen) oder . (Dot) starten.Entfernen Unterkette aus Zeichenkette, die Fragen

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); 

     } 

Ich habe dies versucht, aber ich verstehe nicht, wie Index mehrerer Werte zu bekommen, weil ich eine Liste mit Fragen Worte.

+1

Also, was hindert Sie daran? Hast du gedacht, dass jemand nur den Code für dich schreiben wird? Bitte lesen [fragen]. –

+0

Was hast du probiert? Verwenden Sie – BugFinder

+0

Reguläre Ausdrücke – Amit

Antwort

0

recht einfach:

Verwenden Sie eine nicht-einfangende Gruppe, die für wie sieht/was/wo usw. Wörter: (?:how|what|when|where|whose)

dann eine beliebige Anzahl von Zeichen, die nicht ein ? oder ., entweder durch eine gefolgt : '[^\?\.]*(?:\?|\.).

Prepend es mit einem oder mehreren Leerzeichen übereinstimmen und Sie sollten gut gehen:

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); 

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

Das RegexMuster ist als folgt:

Spiel mit einem String-Start (012.oder what oder usw.) ein beliebiges Zeichen folgt und mit ? oder . Endung

Der zweite Replace die zusätzlichen Leerzeichen aus dem Betrieb resultierenden wegzulassen ist ..

Verwandte Themen