2016-09-09 3 views
-3

Ich habe eine Zeichenfolge wie folgt:Lesen Sie einen Rest der Zeichenfolge von einem Teil

string mystring = "No : 123 - Date : 07/06/2009 - Explanation : Some explanation text" 

I Einigen Erklärungstext aus dieser Zeichenfolge erhalten möge. Wie kann ich den Rest der Zeichenfolge Code nach erhalten Erklärung: in C#? Oder gibt es einen besseren Weg, diese Teilkette zu bekommen? Vielen Dank.

+0

dann, warum Sie auch diese Art der Empfehlung vorschlagen, wie andere die Antworten –

+1

gibt mehrere Möglichkeiten, dies zu tun sein könnte, müssen Sie zuerst Verallgemeinerung tun, bevor sie eine Implementierung –

+0

tun ich für so etwas wie 'String.IndexOf gehen würde ("- Erklärung:") 'zusammen mit einem' string.Substring() '. –

Antwort

6

Ich würde hier einen Ansatz von Regex empfehlen, es würde die Probleme aus anderen Posts entfernen, wo das Zeichen : in den Erklärungsstring aufgenommen werden könnte.

Dieses Beispiel würde das Problem, so lange die „Erklärung:“ lösen Tag ist immer am Ende der Zeichenfolge und der „Erklärung:“ Text kann nicht innerhalb der Einige Erklärungstext erscheinen.

var mystring = "No : 123 - Date : 07/06/2009 - Explanation : Some explanation text" 
var regex = new Regex("(.*)Explanation :(.*)"); 
var match = regex.Match(mystring); 

if (match.Success) 
{ 
    var explanation = match.Groups[match.Groups.Count - 1].Value; 
} 
+0

es funktioniert nicht .. es gibt leere Zeichenfolge! : ((( –

+0

Verzeihen Sie mir, Sie müssen 'match.Groups.Count - 1' als Index verwenden. Ich aktualisierte die Antwort –

+1

Works! Https://dotnetfiddle.net/99g939 (obwohl ich lieber ein schneller, nicht Regex-Version hier, da sehe ich keine Vorteile. ZB https://dotnetfiddle.net/IodBGF) –

3
string mystring = "No : 123 - Date : 07/06/2009 - Explanation : Some explanation text"; 
string explSection = mystring.Substring(mystring.IndexOf("Explanation :")); 
string explText = string.Join("",explSection.Split(':').Skip(1).ToArray()); 

Über dem Code erhalten Sie den erforderlichen Text. ':'

+2

Was ist, wenn 'Einige Erklärung Text' enthält ein ':'? (Tipp: Es ist auch aufgeteilt). –

+0

@UweKeim geändert meine Beantworten Sie diesen Fall: –

+0

[Funktioniert jetzt besser] (https://dotnetfiddle.net/DbovmR). Benötigen Sie zweimal die 'Substring' und' IndexOf'? [Wie wäre es mit dieser] (https: // dotnetfiddle .net/IodBGF)? –

-1
String mystring = "No : 123 - Date : 07/06/2009 - Explanation : Some explanation text"; 
string[] substrngs = mystring.Split(':'); 
string desiredString = substrngs[substrngs.Count - 1]; 

String.Split (char delim) wird eine Zeichenfolge [] mit allen Saiten durch die Spaltung von Ihrem Trennzeichen gefunden zurück. Verwenden Sie dann die Count-Eigenschaft der Zeichenfolge [], um zu ermitteln, wie viele Zeichenfolgen von Split() gefunden wurden, und das letzte Element basierend auf Ihren Parse-Wünschen zu erhalten.

+0

Was ist, wenn 'Erklärungstext' ein ': 'enthält? (Tipp: Es ist auch geteilt.) –

+0

Based in sein Format ist es, was ich ableiten kann. Kann nur mit gegebener Situation antworten. Das Parsen kann unendlich oft durchgeführt werden; Die Art, wie eine Eingabe analysiert wird, hängt vom Format und den Wünschen der Eingabe ab. –

+0

Betrachtet man die 1 Beispiel-Zeichenfolge, die vom Poster bereitgestellt wird, und wähle die Split-Methode, um die gewünschte Teilzeichenfolge zu erhalten, ist es besser, mit "-" zu teilen und dann nach dem Teil zu suchen, der mit "Erklärung:" beginnt. Dies schlägt jedoch fehl, wenn der "Explanation:" Teil das '-' Zeichen enthält. Im Allgemeinen, wenn möglich, ein besseres Trennzeichen für die Daten wäre am besten und machen eine bessere 'Split' -Option (IMO) –

Verwandte Themen