Substring IndexOf in c #

8

Ich habe eine Zeichenfolge, die folgendermaßen aussieht: "texthere^D123456_02" . Aber ich möchte, dass mein Ergebnis D123456 ist.

das mache ich bis jetzt:

%Vor%

Damit entferne ich mindestens _02 , aber wenn ich den gleichen Weg für ^ versuche, bekomme ich immer texthere zurück, auch wenn ich name.IndexOf("^")

verwende

Ich habe auch versucht, nur auf ^ zu prüfen, um mindestens das Ergebnis zu erhalten: D123456_02 , aber immer noch das gleiche Ergebnis.

Ich habe sogar versucht, name.Replace("^" zu verwenden und dann den Teilstring zu verwenden, den ich vorher benutzt habe. Aber auch hier bleibt das Ergebnis gleich.

texthere ist nicht immer die gleiche Länge, also kommt .Remove() nicht in Frage.

Was mache ich falsch?

Danke

    
Desutoroiya 04.03.2016, 08:18
quelle

13 Antworten

8

Beim Aufruf von Substring sollten Sie nicht von 0 starten, sondern von dem gefundenen Index :

%Vor%     
Dmitry Bychenko 04.03.2016, 08:21
quelle
3

Verwenden Sie die Methode String.Split :

%Vor%

Oder Sie könnten RegExp verwenden, um dasselbe zu erreichen.

    
kall2sollies 04.03.2016 08:24
quelle
3

Nun, wenn Sie den gleichen Code verwenden, den Sie gepostet haben, macht er das Richtige, Sie fangen an Zeichen aus dem Zeichen 0 abzurufen und stoppen, wenn es "^" findet, was Sie erhalten werden, ist "Texthier".

Wenn Sie nur den Wert möchten, verwenden Sie Folgendes:

%Vor%

Zuerst wird alles entfernt, was nach dem "_" und was vor "^" ist.

    
Gusman 04.03.2016 08:24
quelle
3

Der Teilstring benötigt eine Position und eine Länge. Sie müssen also herausfinden, wo sich Ihre Position befindet und wo der Unterstrich die Länge berechnet

%Vor%     
Pedro G. Dias 04.03.2016 08:29
quelle
3

Mit regulärem Ausdruck

%Vor%     
vahid kargar 04.03.2016 08:32
quelle
3

Eine Alternative zu dem, was bereits vorgeschlagen wurde, ist die Verwendung von regex:

%Vor%     
Gediminas Masaitis 04.03.2016 08:34
quelle
3

benutze Regex.

%Vor%     
venkat 04.03.2016 08:33
quelle
3

Versuchen Sie das und lassen Sie mich wissen, wie es geht

%Vor%     
DL Narasimhan 04.03.2016 08:37
quelle
2

Ein einfacherer Weg wäre die Verwendung von Teilen

%Vor%     
Laurijssen 04.03.2016 08:23
quelle
2

Am einfachsten wäre es, zuerst die Zeichenfolge zu teilen und dann die ursprüngliche Lösung für den zweiten Teil zu verwenden.

%Vor%

Danach können Sie den Substring wie zuvor verwenden.

    
Matthijs 04.03.2016 08:24
quelle
2
%Vor%     
GasDev 04.03.2016 08:24
quelle
2
%Vor%

Dadurch wird die Zeichenfolge bei allen Vorkommen von _ und ^ geteilt und die Liste der Zeichenfolgen nach der Teilung zurückgegeben. Da die Zeichenfolge, die Sie benötigen D123456 wäre im 1. Index (d. H. Die 2. Position), habe ich das ausgedruckt.

    
Apoorva Srivastava 04.03.2016 08:31
quelle
2

Wenn Sie nur die "d123456" wollen, ist es einfach mit String.Split() , es gibt nichts anderes. Definieren Sie einfach den gewünschten Index. Es gibt Überlastungen auf Split() genau aus diesem Grund.

%Vor%

Hoffe, das hilft.

    
Gabe 04.03.2016 08:36
quelle

Tags und Links