2017-12-28 6 views
3

ich einen String in mehrere Strings geteilt werden soll, basierend auf den folgenden Kriterien:Split-String in mehrere Strings mit bestimmten Kriterien

  • Es hat mindestens zwei Worte zusammen sein
  • Jedes Wort zu jedem nächsten sein muss andere

zum Beispiel: "Hallo wie geht es Ihnen" ich in geteilt werden soll:

  • "Hallo, wie Sie sind"
  • "Hallo, wie geht es"
  • "Hallo, wie"
  • "wie sind"
  • "Wie geht es Ihnen"
  • "are you"

Kann nicht mehrmals wiederholt werden.

Was ich bisher habe, ist dies:

string input = "hello how are you"; 
List<string> words = input.Split(' ').ToList(); 
List<string> inputs = new List<string>(); 

string temp = String.Empty; 

for (int i = 0; i < words.Count; i++) 
{ 
    temp += words[i] + " "; 
    if (i > 0) 
    { 
     inputs.Add(temp); 
    } 
} 

Es gibt die folgenden:

hello how 
hello how are 
hello how are you 

Ich möchte mit, dass die anderen auch und brauchen ein wenig Hilfe zu bekommen.

Antwort

5

Ein Ansatz wäre, über jedes Wort zu iterieren und alle möglichen Sequenzen zu erhalten.

Beispiel:

string input = "hello how are you"; 
List<string> words = input.Split(' ').ToList(); 
List<string> inputs = new List<string>(); 

for (int i = 0; i < words.Count; i++) 
{ 
    var temp = words[i]; 
    for(int j = i+1;j < words.Count;j++) { 
     temp += " " + words[j]; 
     inputs.Add(temp); 
    } 
} 
//hello how 
//hello how are 
//hello how are you 
//how are 
//how are you 
//are you 
+0

Sie haben mich dazu geschlagen! – Magnetron

+0

Genau danach habe ich gesucht. Danke für die Hilfe, schätze es. – gafs

2

Hier ist der Pseudo-Code

for (int i = 0; i < words.Count - 1; i++) 
{ 
    for each (int j = i + 1; j < words.Count; j++) 
    { 
     //rebuild string from words[i] through words[j] and add to list 
    } 
} 

Die Idee, jedes Wort mit Ausnahme der letzten als Ausgangswort zu betrachten ist (da es kein Wort es folgende Voraussetzungen erfüllt sein kann). Berücksichtigen Sie für das Startwort jedes mögliche Endwort (das erste wäre das nächste Wort in der Liste und das letzte wäre das letzte Wort). Erstellen Sie dann für jedes Anfangs-/End-Wortpaar die Zeichenfolge aus allen dazwischen liegenden Wörtern neu und fügen Sie sie der Liste hinzu.

Verwandte Themen